I try to implement Admob in the Goceng project. Since Admob changed, I can't really follow the documentation of this project.
My error is
05-04 12:51:21.959: W/Ads(9017): There was a problem getting an ad response. ErrorCode: 1
Many other people bought this project too, so I think the code is written well, I did not changed anything.
For testing I use:
AdRequest adRequest = new AdRequest.Builder().addTestDevice("XXX").build();
ads.loadAd(adRequest);
Admob id looks like
<string name="admob_id">ca-app-pub-xxxxxxxxxxxxxxxx/xxxxxxxxxx</string>
I just created an App in Admob and an advertisement block where I have this ID from.
Can anyone tell me my mistake?
Meta-data etc. in manifest is there, as I mentioned it is a finished project which works for many people
Code:
#Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ctx = this;
setContentView(R.layout.activity_home);
// Declare object of Utils class;
utils = new Utils(this);
// connect view objects and xml ids
adView = (AdView)this.findViewById(R.id.adView);
// add the fragment to the 'fragment_container' FrameLayout
getSupportFragmentManager().beginTransaction()
.add(R.id.frame_content, fragObjList).commit();
// load ads
Ads.loadAds(adView);
}
activity_home.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:ads="http://schemas.android.com/apk/res-auto"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#android:color/darker_gray">
<FrameLayout
android:id="#+id/frame_content"
android:layout_above="#+id/adView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<com.google.android.gms.ads.AdView
android:id="#+id/adView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
ads:adUnitId="#string/admob_id"
ads:adSize="SMART_BANNER"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"/>
</RelativeLayout>
Related
I am making a chat app and I want to add a feature like telegram to copy links ,phone numbers and etc.. from long clicking on an auto link.I used this library to add long click listeners on a auto link.I implemented it successfully.But when I do this, i want to show a Lottie animation in the start like this but on long click of a link.
I tried many answer but I get an exception.I already made the layout for custom snakbar.It is given below
<?xml version="1.0" encoding="utf-8"?>
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="56dp"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_margin="#dimen/_3sdp"
android:backgroundTint="#color/snakbar_background"
app:cardCornerRadius="#dimen/_4sdp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_vertical">
<com.airbnb.lottie.LottieAnimationView
android:id="#+id/lottieSnakbar"
android:layout_width="35dp"
android:layout_height="35dp"
android:layout_marginStart="#dimen/_5sdp"
android:layout_marginEnd="#dimen/_10sdp"
app:lottie_rawRes="#drawable/copy"
app:lottie_autoPlay="true"
app:lottie_loop="false"/>
<TextView
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:text="Text copied to clipboard"
android:gravity="center_vertical"
android:theme="?snackbarTextViewStyle"
tools:ignore="HardcodedText" />
</LinearLayout>
</androidx.cardview.widget.CardView>
Now how can I achieve this?
You can use an interface in the adapter. And receive and show snakbar from activity
You could use localBroadcast and broadcast a local signal from the adapter and let the other Activity(probably receiver) handle snakbar.
AdapterClass{
LocalBroadcastManager localBroadcastManager = null;
void sendB(parms){
if(localBroadcastManager != null){
localBroadcastManager.sendBroadcast(Intent("NOTIFICATION_RECEIVER"))
}
onCreateViewHolder(){
localBroadcastManager = LocalBroadcastManager.getInstance(applicationContext)
}
onBindViewHolder(){
if(someCondition){
sendB(parms);
}
}
then receive it from an activity then call snakBar
I need a Stripe Implementation for my Java Android App, but with a Server in Java, I don't know how to use node or php to implement that server-side and I found something on their docs:
https://stripe.com/docs/payments/accept-a-payment?integration=elements#android-create-payment-intent
but, the server-side is poorly explained.
All I've wrote until now is :
<?xml version="1.0" encoding="utf-8"?>
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="30dp"
app:layout_behavior="#string/appbar_scrolling_view_behavior"
tools:context=".Checkout">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
>
<ImageView
android:layout_width="100dp"
android:layout_height="100dp"
android:src="#drawable/logo"
android:layout_gravity="center"
/>
<TextView
android:id="#+id/youhavetopay"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="22sp"
android:textColor="#color/colorPrimary"
android:fontFamily="#font/muli_black"
android:layout_gravity="center"
/>
<com.stripe.android.view.CardInputWidget
android:id="#+id/cardInputWidget"
android:layout_marginTop="30dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="#+id/payButton"
android:layout_gravity="center"
android:layout_marginTop="20dp"
/>
</LinearLayout>
</ScrollView>
and this
public class Checkout extends AppCompatActivity {
Button payBtn;
String message;
String price;
TextView text;
#Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_checkout);
payBtn = findViewById(R.id.payButton);
text = findViewById(R.id.youhavetopay);
Bundle extras = getIntent().getExtras();
if(extras != null) {
message = extras.getString("message");
price = extras.getString("passprice");
}
String t = "Pay $"+price;
payBtn.setText(t);
text.setText(message);
}
}
I have these implementations :
implementation "com.stripe:stripe-java:15.1.0"
implementation 'com.stripe:stripe-android:15.1.0'
implementation 'com.squareup.okhttp3:okhttp:4.4.0'
implementation 'com.google.code.gson:gson:2.8.6'
I really don't understand what I have to do from their docs. I only want a pay button that makes a payment from that card and if its accepted, do something on the database. A simple payment.
If you can guide me please, I would appreciate it! Any tutorials or advices are welcomed. I've tried to copy from the GitHub, but I saw many red lines from imports and I got lost.
Thank you in advance!
This sample includes both example Android client and a Java server implementations. You should be able to clone the repository and follow the appropriate READMEs to run those examples and see how this works. Follow along with the guide and if you have more specific questions please raise those.
You will need to be able to install and build android & java to run this, of course.
So I want to implement a custom Facebook share button into my Android app, but thus far I've only managed to use the native one, which I imported into my .xml file and made use of in my Java activity for that specific page.
My code looks like this (in .xml);
<com.facebook.share.widget.ShareButton
android:id="#+id/share_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="Share"
android:layout_centerHorizontal="true"/>
And in my .java, outside onCreate();
private ShareButton shareButton;
ShareLinkContent content = new ShareLinkContent.Builder()
.setContentUrl(Uri.parse("https://developers.facebook.com"))
.setContentTitle("MyTitle")
.build();
Inside onCreate();
shareButton = (ShareButton)findViewById(R.id.share_btn);
shareButton.setShareContent(content);
How would I go about making use of a custom button that I've imported into XML? Using .setShareContent obviously doesn't work if it's not an instance of ShareButton. Thanks in advance!
I have found a solution. It's clear that facebook share will work on its own button click event. So you will have to explicitly call the View.performclick() method.
Here is how i have done this:
In my layout
<com.facebook.share.widget.ShareButton
android:id="#+id/share_btn_fb"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="gone"
android:contentDescription="#string/share" />
<LinearLayout
android:id="#+id/share_btn"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="4"
android:orientation="horizontal"
android:gravity="center_vertical">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="15dp"
android:src="#drawable/google_share" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="#string/share_google"
android:textColor="#color/green_color"
android:layout_marginLeft="5dp"
android:textSize="18sp" />
</LinearLayout>
Inside activity get refrences of these views.
ShareButton shareButton = (ShareButton) layout.findViewById(R.id.share_btn_fb);
LinearLayout shareFB = (LinearLayout) layout.findViewById(R.id.share_btn);
LinearLayout shareGoogle = (LinearLayout) layout.findViewById(R.id.share_google);
shareGoogle.setOnClickListener(this);
shareFB.setOnClickListener(this);
Inside onClick()
case R.id.share_btn :
shareButton.performClick();
break;
case R.id.share_btn_fb :
ShareLinkContent content = new ShareLinkContent.Builder()
.setContentTitle("Content title")
.setContentDescription("App descr")
.setContentUrl(Uri.parse("some url"))
.build();
shareButton.setShareContent(content);
break;
Basically shareButton.performClick(); is doing the trick.
I'm familiar with implementing Admobs within my app, however im struggling with changing my code from Activities to Fragments.
I'm getting a NullPointerException. I believe using getView() may be causing my issue.
Admob code: Fragment
//CREATE BANNER ADD
private void createAdmobBanner()
{
// Create an ad.
adView = (com.google.android.gms.ads.AdView) getView()
.findViewById(R.id.adView);
AdRequest adRequest = new AdRequest.Builder()
// Add a test device to show Test Ads
.addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
// .addTestDevice("B3827F13FB335337F4CA0F350B78A866")
.build();
// Load ads into Banner Ads
adView.loadAd(adRequest);
}
XML Admob Layout
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:ads="http://schemas.android.com/apk/res-auto"
android:id="#+id/adViewHolder"
android:layout_width="fill_parent"
android:layout_height="#dimen/ad_bottom_height"
android:layout_marginTop="1dp"
android:gravity="center_vertical"
android:orientation="horizontal" >
<com.google.android.gms.ads.AdView
android:id="#+id/adView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
ads:adSize="SMART_BANNER"
ads:adUnitId="ca-app-pub-xxxx/xxxx"
/>
</LinearLayout>
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="#dimen/bottom_bar_height"
android:orientation="horizontal" >
<Button
android:id="#+id/button1"
android:text="Refresh Scores"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:textSize="11dp"
android:layout_weight="1"
/>
Note: I use ...include layout="#layout/admob_ad" /> in my fragment layout xml.
Code Error:
09-24 22:04:02.429: E/AndroidRuntime(5375): java.lang.NullPointerException: Attempt to invoke virtual method 'void com.google.android.gms.ads.AdView.loadAd(com.google.android.gms.ads.AdRequest)' on a null object reference
09-24 22:04:02.429: E/AndroidRuntime(5375): at info.androidhive.slidingmenu.ChampionsFragment.createAdmobBanner(ChampionsFragment.java:391)
I faced Similar issue, when i checked closely in resourse file
There were two resourse file for my activity:
\res\layout\activity_main_lauch.xml
\res\layout-v21\activity_main_lauch.xml
I was modifing single file, hence it was throwing error. when i apply the change in both files it started working.
findViewById gives out an error, I think it's because it's returning null. My app is forced to close.
SensorManager sensorManager=null;
TextView x= null;
TextView y= null;
TextView z= null;
/** Called when the activity is first created. */
#Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
setContentView(R.layout.main);
x= (TextView) findViewById(R.id.tv1);
y= (TextView) findViewById(R.id.tv2);
z= (TextView) findViewById(R.id.tv3);
}
XML:
<TextView
android:id="#+id/tv1"
android:layout_x="10px"
android:layout_y="550px"
android:text="#string/x"
/>
<TextView
android:id="#+id/tv2"
android:layout_x="100px"
android:layout_y="550px"
android:text="#string/y"
/>
<TextView
android:id="#+id/tv3"
android:layout_x="200px"
android:layout_y="550px"
android:text="#string/z"
/>
Can someone please tell me what I'm doing wrong?
SOLVED!
I used the XML given by Sunny at the bottom! Thank you to all!
That's simple.... tv* is not in your layout!
Please post the layout, I am 100% sure it doesn't contain:
<TextView android:id="#+id/tv1"/>
<TextView android:id="#+id/tv2"/>
<TextView android:id="#+id/tv3"/>
Please also learn how to get a logcat before going further in android development! ;-)
Window -> Show View -> Logcat
yes above code working fine and xml file should be like this.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:id="#+id/tv1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"></TextView>
<TextView
android:id="#+id/tv2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"></TextView>
<TextView>
android:id="#+id/tv3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"></TextView>
</LinearLayout>
yes that problem and if with xml is not done then
You import android.R;
so that it will give error if xml you have
remove that
and import PACKAGENAME.R;
First : Verify that your TextView Are present on your layout : main.xml :
<TextView android:id="#+id/tv1" .../>
<TextView android:id="#+id/tv2" .../>
<TextView android:id="#+id/tv3" .../>
Second : reBuild your project by following this steps : Project ==> Clean ==> Select your project and click OK .
The reason why this happens is :
findViewById() will search for the TextViews in the View hierarchy established by setContentView(R.layout.main). So if the TextViews aren't in main.xml you will get a null