我正在创建一个应用程序,玩家将其名称输入编辑文本。检索此信息并通过附加信息发送到第二个活动。每当我运行它时,我得到一个Resources $ NotFoundException。我很确定这是来自我的代码还是来自我的资源文件夹。
这是我的代码(更新时没有上表声明)
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);
}
以下是接收活动的代码:
@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();
}
这是logcat错误(UPDATED 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 :(得分:39)
这是你的第一个Toast电话:
Toast.makeText(this, number, Toast.LENGTH_SHORT).show();
这里,第二个参数是一个整数(number
),所以它认为这是一个字符串ID。尝试将number
替换为number+""
。