问题
ERROR :
02-19 21:28:52.920: E/AndroidRuntime(17041): FATAL EXCEPTION: main
02-19 21:28:52.920: E/AndroidRuntime(17041): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.gamecik/com.example.gamecik.MainActivity}: java.lang.ClassCastException: com.google.android.gms.ads.AdView cannot be cast to android.widget.LinearLayout
02-19 21:28:52.920: E/AndroidRuntime(17041): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2304)
02-19 21:28:52.920: E/AndroidRuntime(17041): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2358)
02-19 21:28:52.920: E/AndroidRuntime(17041): at android.app.ActivityThread.access$700(ActivityThread.java:165)
02-19 21:28:52.920: E/AndroidRuntime(17041): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1326)
02-19 21:28:52.920: E/AndroidRuntime(17041): at android.os.Handler.dispatchMessage(Handler.java:99)
02-19 21:28:52.920: E/AndroidRuntime(17041): at android.os.Looper.loop(Looper.java:137)
02-19 21:28:52.920: E/AndroidRuntime(17041): at android.app.ActivityThread.main(ActivityThread.java:5450)
02-19 21:28:52.920: E/AndroidRuntime(17041): at java.lang.reflect.Method.invokeNative(Native Method)
02-19 21:28:52.920: E/AndroidRuntime(17041): at java.lang.reflect.Method.invoke(Method.java:525)
02-19 21:28:52.920: E/AndroidRuntime(17041): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1187)
02-19 21:28:52.920: E/AndroidRuntime(17041): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)
02-19 21:28:52.920: E/AndroidRuntime(17041): at dalvik.system.NativeStart.main(Native Method)
02-19 21:28:52.920: E/AndroidRuntime(17041): Caused by: java.lang.ClassCastException: com.google.android.gms.ads.AdView cannot be cast to android.widget.LinearLayout
02-19 21:28:52.920: E/AndroidRuntime(17041): at com.example.gamecik.MainActivity.onCreate(MainActivity.java:32)
02-19 21:28:52.920: E/AndroidRuntime(17041): at android.app.Activity.performCreate(Activity.java:5369)
02-19 21:28:52.920: E/AndroidRuntime(17041): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1104)
02-19 21:28:52.920: E/AndroidRuntime(17041): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2267)
When I use Admob code my application is error..if I delete Admob code my application is good.. PLEASE HELP ME... Sorry that this question hasn't given much information, I just don't know what information to give to you (if that makes sense?) Please respond and tell me what information you would need and thank you for any and all of your help
HERE IS MY CODE:
MY ACTIVITY JAVA
package com.example.gamecik;
import com.google.android.gms.ads.AdSize;
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.AdView;
import android.os.Bundle;
import android.app.Activity;
import android.media.MediaPlayer;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.LinearLayout;
public class MainActivity extends Activity implements OnClickListener {
private MediaPlayer mp;
private AdView adView;
private static final String AD_UNIT_ID = "ca-app-pub-1715534499344773/3123443647";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
adView = new AdView(this);
adView.setAdUnitId(AD_UNIT_ID);
adView.setAdSize(AdSize.BANNER);
LinearLayout layout = (LinearLayout)findViewById(R.id.adView);
layout.addView(adView);
AdRequest adRequest = new AdRequest.Builder().build();
adView.loadAd(adRequest);
// Add click listeners to all the ImageButtons
View button1 = findViewById(R.id.sescalbuton);
View button2 = findViewById(R.id.magnumsilah);
View button3 = findViewById(R.id.Button03);
View button4 = findViewById(R.id.Button02);
button1.setOnClickListener(this);
button2.setOnClickListener(this);
button3.setOnClickListener(this);
button4.setOnClickListener(this);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
// Required method if OnClickListener is implemented
@Override
public void onClick(View v) {
// Find which ImageButton was pressed and take appropriate action
switch(v.getId()){
// The cow button
case R.id.sescalbuton:
mp = MediaPlayer.create(this, R.raw.ak47);
break;
// The duck button
case R.id.magnumsilah:
mp = MediaPlayer.create(this, R.raw.magnum);
break;
// The sheep button
case R.id.Button03:
mp = MediaPlayer.create(this, R.raw.shotgun);
break;
// The uzi
case R.id.Button02:
mp = MediaPlayer.create(this, R.raw.uzi);
break;
}
mp.seekTo(0);
mp.start();
}
}
MY XML CODE:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:ads="http://schemas.android.com/apk/lib/com.google.android.gms.ads"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/wood"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<Button
android:id="@+id/sescalbuton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignRight="@+id/shotgun"
android:layout_below="@+id/magnumsilah"
android:background="@drawable/ak47" />
<Button
android:id="@+id/Button03"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/sescalbuton"
android:layout_centerHorizontal="true"
android:background="@drawable/sohtgun" />
<Button
android:id="@+id/Button02"
android:layout_width="150dp"
android:layout_height="110dp"
android:layout_above="@+id/sescalbuton"
android:layout_alignRight="@+id/sescalbuton"
android:background="@drawable/guns" />
<com.google.android.gms.ads.AdView
xmlns:ads="http://schemas.android.com/apk/res-auto"
android:id="@+id/adView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
ads:adUnitId="ca-app-pub-1715534499344773/3123443647"
ads:adSize="BANNER"/>
<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/adView"
android:layout_alignTop="@+id/adView"
android:layout_marginTop="28dp"
android:src="@drawable/supperweapon" />
<Button
android:id="@+id/magnumsilah"
android:layout_width="150dp"
android:layout_height="100dp"
android:layout_alignLeft="@+id/imageView1"
android:layout_below="@+id/imageView1"
android:background="@drawable/magnum" />
</RelativeLayout>
PLEASE HELP ME...WHAT IS PROBLEM ?
回答1:
If I understood correctly, casting is not your only issue. You're trying to add AdView to a LinearLayout that doesn't exist in your activities XML. But instead in your XML you've added an AdView and your initiating an AdView dynamically as well, which doesn't make any sense. Change your onCreate(..) code to the following:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
adView = (AdView) findViewById(R.id.adView);
adView.setAdUnitId(AD_UNIT_ID);
adView.setAdSize(AdSize.BANNER);
AdRequest adRequest = new AdRequest.Builder().build();
adView.loadAd(adRequest);
//.... rest of your onCreate() code
}
回答2:
Look for whatever R.id.adview is in your layout file. It's not a LinearLayout but you're trying to cast it as one. That's why it's crashing. Probably is an AdView?
回答3:
The problem seems to be here,
LinearLayout layout = (LinearLayout)findViewById(R.id.adView);
where you are I believe trying to cast your AdView layout to a linear layout.
Change R.id.adView to the id of your LinearLayout. Post your layout xml too if this is not he case.
回答4:
Try to clean the project after changing the place. This worked for me!
来源:https://stackoverflow.com/questions/21890899/fatal-exception-main-error-android-development