我是一个初学者,所以请忍受我.我正在创建一个应用程序,玩家将其名字输入到编辑文本中.该信息被检索并通过附加发送到第二个活动.每当我运行这个,我得到一个资源$NotFoundException.我确定如果这是从我的代码或从我的资源文件夹.
这是我的代码(UPDATED WITHOUT 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,p3,p4};
- names=c;
- break;
- case 5:
- String[] d= {p1,p4,p5};
- names=d;
- break;
- case 6:
- String[] e = {p1,p5,p6};
- names=e;
- break;
- case 7:
- String[] f = {p1,p6,p7};
- names=f;
- break;
- case 8:
- String[] g = {p1,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,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
提前致谢!
解决方法
这是您的第一个Toast电话:
- Toast.makeText(this,number,Toast.LENGTH_SHORT).show();
这里,第二个参数是一个整数(number),所以它认为是一个字符串ID.尝试用数字“”替换号码.