2016-11-25 4 views
0

Ich habe meine App in Android Studio Emulator über mein Samsung S7-Telefon (API 23 und 6.0.1) getestet und es funktioniert gut. Wenn ich es von meinem Laptop abziehe und die App starte, stürzt es ab.Android - Null-Array. Läuft in Android Studio-Emulator, aber nicht auf dem echten Gerät, wenn sie nicht angeschlossen ist

Mein Logcat sagt, dass ich versuche, ein Null-Array aufzurufen ... aber es ist nicht null? Ich verstehe nicht, warum alles funktioniert, wenn ich die App über Android Studio auf meinem Handy laufe, aber wenn ich es alleine laufen lasse, stürzt es ab. Dankbar für jede Hilfe!

Hier ist meine logcat

FATAL EXCEPTION: main 
Process: com.example.abc.def, PID: 28693 
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.abc.def/com.example.abc.def.MainActivity}: java.lang.NullPointerException: Attempt to read from null array 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3253) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3349) 
at android.app.ActivityThread.access$1100(ActivityThread.java:221) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1794) 
at android.os.Handler.dispatchMessage(Handler.java:102) 
at android.os.Looper.loop(Looper.java:158) 
at android.app.ActivityThread.main(ActivityThread.java:7224) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120) 
Caused by: java.lang.NullPointerException: Attempt to read from null array 
at com.example.abc.def.MainActivity.onCreate(MainActivity.java:49) 
at android.app.Activity.performCreate(Activity.java:6876) 
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1135) 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3206) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3349)  
at android.app.ActivityThread.access$1100(ActivityThread.java:221)  
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1794)  
at android.os.Handler.dispatchMessage(Handler.java:102)  
at android.os.Looper.loop(Looper.java:158)  
at android.app.ActivityThread.main(ActivityThread.java:7224)  
at java.lang.reflect.Method.invoke(Native Method)  
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)  
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)  

Und hier ist mein Code. Die Frage stellt sich am Boden, als ich btn1.setText (ItemArray [0]) nennen, weil das Array „null“

public class MainActivity extends AppCompatActivity { 

Button btn1, btn2; 
String btn1Name, btn2Name; 
String btnValue = "", itemValue = "", itemPosition = ""; 
String[] buttonArray = new String[]{"blank", "blank"}; 
String[] itemArray = new String[]{"blank", "blank"}; 
String[] positionArray = new String[]{"blank", "blank"}; 

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    btn1 = (Button) findViewById(R.id.button1); 
    btn2 = (Button) findViewById(R.id.button2); 

    Bundle extras = getIntent().getExtras(); 
    if (extras != null) { 
     btnValue = extras.getString("btnValue"); 
     itemValue = extras.getString("itemValue"); 
     itemPosition = extras.getString("itemPosition"); 

     buttonArray = extras.getStringArray("buttonArray"); 
     itemArray = extras.getStringArray("array"); 
     positionArray = extras.getStringArray("positionArray"); 

     if (btnValue != null && btnValue.equals("btn1")){ 
      buttonArray[0] = btnValue; 
      itemArray[0] = itemValue; 
      positionArray[0] = itemPosition; 
     } else if (btnValue != null && btnValue.equals("btn2")) { 
      buttonArray[1] = btnValue; 
      itemArray[1] = itemValue; 
      positionArray[1] = itemPosition; 
     } 
    } 

    btn1.setText(itemArray[0]); 
    btn2.setText(itemArray[1]); 
} 
} 
+0

Was wird zurückgegeben von "extras.getString (" itemValue ")" & "itemArray = extras.getStringArray (" array ");"? –

+0

@AdeelShahzad ist es von einer anderen Aktivität. Ich glaube nicht, dass es etwas mit meinem Code zu tun haben würde, da "Extras" beim Starten der App null sein sollten. itemArray [0] und [1] ist beim Start der Aktivität bereits "leer" zugewiesen. – Pam

+0

Können Sie bitte den anderen Klassencode posten, wo Sie diese Extras weitergeben? –

Antwort

1

Ich vermute hier, aber ist MainActivity die erste Aktivität im Projekt?

Ich glaube, Sie haben den Code geschrieben, um die Rückkehr zu dieser Aktivität mit Daten aus anderen Aktivitäten zu behandeln. Ich habe gerade versucht und getIntent(). GetExtras() gibt null zurück, wenn die Aktivität zuerst auf einem Emulator erstellt wird. Wenn ich es jedoch auf meinem Gerät ausgeführt habe, generiert getIntent diese Ausnahme.

Beachten Sie, dass onCreate einmal aufgerufen wird. Wenn Sie also die Ergebnisse einer anderen Aktivität anzeigen möchten, werfen Sie einen Blick auf How to manage `startActivityForResult` on Android?.

Verwandte Themen