2012-04-02 4 views
1

Ich bin wirklich verzweifelt jetzt, ich versuchte alles.AdMob Force schließen (Android)

Jedes Mal, wenn ich meine App ausführen, wird diese Kraft geschlossen. Es zeigt dies im Logcat.

04-02 21:26:33.079: E/AndroidRuntime(18013): FATAL EXCEPTION: main 
04-02 21:26:33.079: E/AndroidRuntime(18013): java.lang.RuntimeException: Unable to   start activity ComponentInfo{com.pxr.tutorial.xmltest/com.pxr.tutorial.xmltest.Main}: java.lang.NullPointerException 
04-02 21:26:33.079: E/AndroidRuntime(18013): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956) 
04-02 21:26:33.079: E/AndroidRuntime(18013): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981) 
04-02 21:26:33.079: E/AndroidRuntime(18013): at android.app.ActivityThread.access$600(ActivityThread.java:123) 
04-02 21:26:33.079: E/AndroidRuntime(18013): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147) 
04-02 21:26:33.079: E/AndroidRuntime(18013): at android.os.Handler.dispatchMessage(Handler.java:99) 
04-02 21:26:33.079: E/AndroidRuntime(18013): at android.os.Looper.loop(Looper.java:137) 
04-02 21:26:33.079: E/AndroidRuntime(18013): at android.app.ActivityThread.main(ActivityThread.java:4424) 
04-02 21:26:33.079: E/AndroidRuntime(18013): at java.lang.reflect.Method.invokeNative(Native Method) 
04-02 21:26:33.079: E/AndroidRuntime(18013): at java.lang.reflect.Method.invoke(Method.java:511) 
04-02 21:26:33.079: E/AndroidRuntime(18013): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:787) 
04-02 21:26:33.079: E/AndroidRuntime(18013): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:554) 
04-02 21:26:33.079: E/AndroidRuntime(18013): at dalvik.system.NativeStart.main(Native Method) 
04-02 21:26:33.079: E/AndroidRuntime(18013): Caused by: java.lang.NullPointerException 
04-02 21:26:33.079: E/AndroidRuntime(18013): at com.pxr.tutorial.xmltest.Main.onCreate(Main.java:41) 
04-02 21:26:33.079: E/AndroidRuntime(18013): at android.app.Activity.performCreate(Activity.java:4465) 
04-02 21:26:33.079: E/AndroidRuntime(18013): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049) 
04-02 21:26:33.079: E/AndroidRuntime(18013): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920) 
04-02 21:26:33.079: E/AndroidRuntime(18013): ... 11 more 

Main.java

public class Main extends ListActivity { 
private AdView adView; 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.listplaceholder); 

    LinearLayout layout = (LinearLayout)findViewById(R.layout.main); 
    adView = new AdView(this, AdSize.BANNER, "here i put my id with the quotes"); 
    layout.addView(adView); 
    AdRequest adRequest = new AdRequest(); 
    adRequest.setTesting(true); 
    adView.loadAd(adRequest); 

Manifest:

<activity 
      android:name="com.google.ads.AdActivity" 
      android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"/> 

main.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads" 

listplaceholder.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent">  

    <ListView 
     android:id="@id/android:list" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:drawSelectorOnTop="false" /> 

    <TextView 
     android:id="@id/android:empty" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:text="No data"/> 

</LinearLayout> 

Ja, ich habe die Bibliotheken importiert und das Build-Ziel geändert. Ich änderte auch lib zu libs.

Bitte helfen Sie mir :(

+0

Welches ist Zeile 41 Ihrer Hauptklassendatei? –

+0

layout.addView (adView); – Niell

+0

Ich habe die Datei listplaceholder.xml meinem Beitrag hinzugefügt. – Niell

Antwort

1

Da Sie festgestellt, dass

layout.addView(adView); 

die Nullpointer wirft, ist es sehr wahrscheinlich, dass

findViewById(R.layout.main); 

zurück null und layout das hält in den Leitungen Unten, und das ist tatsächlich der Fall hier.Sie verwenden R.layout.main, die eine Layout-Referenz ist. Sie benötigen jedoch eine ID, daher findViewById() - in diesem Fall wird es nie funktionieren.

Also diese Funktion zu erhalten, müssen Sie zwei Dinge:

Zuerst müssen Sie eine ID zu einem Linearlayout zuzuordnen. Ich denke, dass der beabsichtigte ist der äußere in listplaceholder.xml, und es hat noch keine ID. Fügen Sie ein android:id XML-Attribut, sollte es so aussieht am Ende:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:id="@+id/container"> 

Zweitens ändert die oben findViewById() Erklärung für die korrekte ID suchen

findViewById(R.id.container); 

Diese in einem richtig führen soll zugewiesenes Layout innerhalb layout.

+0

Ich weiß nicht, wo android hinzugefügt werden soll: id = "@ + id/container" in listplaceholder.xml hat die findViewById bereits geändert. Danke für die Hilfe – Niell

+0

@Niell Edited es in das komplette Tag. Hoffe es ist jetzt klarer. :) –

+0

Yay danke, keine Kraft zu schließen, ich sehe nicht die Anzeige tho, aber ich hörte es dauert eine Weile beim ersten Start =) Vielen Dank – Niell