2012-06-06 10 views
9

Ich erstelle eine App, in der die Spieler ihre Namen in Editiertexte eingeben. Diese Informationen werden abgerufen und über Extras an eine zweite Aktivität gesendet. Immer wenn ich das ausführe, erhalte ich eine Resources $ NotFoundException. Ich bin sicher, wenn dies von meinem Code oder von meinem Ressourcen-Ordner ist.

Hier ist mein Code (AKTUALISIERT OHNE TOAST STATEMENTS)

private void getNames(int number){  

    Intent intent = new Intent(Setup.this, Test.class); 
    intent.putExtra("numberofplayers", number); 

    try { 

    if(!player1.getText().toString().contentEquals("")) 
     p1 = player1.getText().toString(); 
    else 
     p1= "Player 1"; 
    if(!player2.getText().toString().contentEquals("")) 
     p2 = player2.getText().toString(); 
    else 
     p2= "Player 2"; 
    if(!player3.getText().toString().contentEquals("")) 
     p3 = player3.getText().toString(); 
    else 
     p3= "Player 3"; 
    if(!player4.getText().toString().contentEquals("")) 
     p4 = player4.getText().toString(); 
    else 
     p5= "Player 5"; 
    if(!player6.getText().toString().contentEquals("")) 
     p6 = player6.getText().toString(); 
    else 
     p6= "Player 6"; 
    if(!player7.getText().toString().contentEquals("")) 
     p7 = player7.getText().toString(); 
    else 
     p7= "Player 7"; 
    if(!player8.getText().toString().contentEquals("")) 
     p8 = player8.getText().toString(); 
    else 
     p8= "Player 8"; 

    switch (number) { 
    case 2: 
     String[] a = {p1,p2}; 
     names=a; 
     break; 
    case 3: 
     String[] b = {p1,p2,p3}; 
     names=b; 
     break; 
    case 4: 
     String[] c = {p1,p2,p3,p4}; 
     names=c; 
     break; 
    case 5: 
     String[] d= {p1,p2,p3,p4,p5}; 
     names=d; 
     break; 
    case 6: 
     String[] e = {p1,p2,p3,p4,p5,p6}; 
     names=e; 
     break; 
    case 7: 
     String[] f = {p1,p2,p3,p4,p5,p6,p7}; 
     names=f; 
     break; 
    case 8: 
     String[] g = {p1,p2,p3,p4,p5,p6,p7,p8}; 
     names=g; 
     break; 
    } 
    } catch (Exception e) { 
     Log.e("Setup.class Error:", e.getMessage()); 
    } 
    //Toast.makeText(this, number + "", Toast.LENGTH_SHORT).show(); 

    //for(int q =0;q<names.length;q++) 
    // Toast.makeText(this, names[q], Toast.LENGTH_SHORT).show(); 

    intent.putExtra("namearray", names); 
    startActivity(intent); 
} 

Hier ist der Code für die Empfangsaktivität:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    Bundle ext = getIntent().getExtras(); 
    int i= ext.getInt("numberofplayers"); 
    String[] names = ext.getStringArray("namearray"); 

    Toast.makeText(this, i, Toast.LENGTH_SHORT).show(); 

    for(int q =0;q<names.length;q++) 
     Toast.makeText(this, names[q], Toast.LENGTH_SHORT).show(); 
} 

Und hier ist der logcat Fehler (AKTUALISIERT Logcat REPORT):

06-06 21:21:07.267: E/AndroidRuntime(2538): FATAL EXCEPTION: main 
06-06 21:21:07.267: E/AndroidRuntime(2538): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.brightdesign.truthordare/com.brightdesign.truthordare.Test}: android.content.res.Resources$NotFoundException: String resource ID #0x2 
06-06 21:21:07.267: E/AndroidRuntime(2538):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956) 
06-06 21:21:07.267: E/AndroidRuntime(2538):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981) 
06-06 21:21:07.267: E/AndroidRuntime(2538):  at android.app.ActivityThread.access$600(ActivityThread.java:123) 
06-06 21:21:07.267: E/AndroidRuntime(2538):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147) 
06-06 21:21:07.267: E/AndroidRuntime(2538):  at android.os.Handler.dispatchMessage(Handler.java:99) 
06-06 21:21:07.267: E/AndroidRuntime(2538):  at android.os.Looper.loop(Looper.java:137) 
06-06 21:21:07.267: E/AndroidRuntime(2538):  at android.app.ActivityThread.main(ActivityThread.java:4424) 
06-06 21:21:07.267: E/AndroidRuntime(2538):  at java.lang.reflect.Method.invokeNative(Native Method) 
06-06 21:21:07.267: E/AndroidRuntime(2538):  at java.lang.reflect.Method.invoke(Method.java:511) 
06-06 21:21:07.267: E/AndroidRuntime(2538):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
06-06 21:21:07.267: E/AndroidRuntime(2538):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
06-06 21:21:07.267: E/AndroidRuntime(2538):  at dalvik.system.NativeStart.main(Native Method) 
06-06 21:21:07.267: E/AndroidRuntime(2538): Caused by: android.content.res.Resources$NotFoundException: String resource ID #0x2 
06-06 21:21:07.267: E/AndroidRuntime(2538):  at android.content.res.Resources.getText(Resources.java:247) 
06-06 21:21:07.267: E/AndroidRuntime(2538):  at android.widget.Toast.makeText(Toast.java:260) 
06-06 21:21:07.267: E/AndroidRuntime(2538):  at com.brightdesign.truthordare.Test.onCreate(Test.java:16) 
06-06 21:21:07.267: E/AndroidRuntime(2538):  at android.app.Activity.performCreate(Activity.java:4465) 
06-06 21:21:07.267: E/AndroidRuntime(2538):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049) 
06-06 21:21:07.267: E/AndroidRuntime(2538):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920) 
06-06 21:21:07.267: E/AndroidRuntime(2538):  ... 11 more 
+0

der Grund für diesen Fehler ist lächerlich .. zumindest Android sollte angemessene sinnvolle Fehlermeldung geben. Ich habe 2-3 Stunden auf diesen Fehler verschwendet, sollte ich hier früh besuchen :( –

Antwort

39

Dies ist Ihr erster Toastanruf:

Hier ist das zweite Argument eine ganze Zahl (number), also denkt es, dass es sich um eine String-ID handelt. Versuchen Sie, number durch number+"" zu ersetzen.

+15

Ein besserer Weg wäre 'String.valueOf (Nummer)'. –

+0

Ok ... Danke, das war ein Fehler, den ich nicht habe , aber ich stelle nur die Toast-Anweisungen ein, um zu sehen, ob das Problem vor oder nach der Toast-Anweisung aufgetreten ist.Wenn ich die Toast-Anweisungen entferne, schließt die App-Kraft.Ein Rat? – Drew

+0

Bitte korrigieren/entfernen Sie diese Toast-Zeile und veröffentlichen Sie die neue LogCat Ausgabe, so können wir sehen, wo der Force-Close-Fehler ist. – Eric

Verwandte Themen