【问题标题】:Android Resources$NotFoundExceptionAndroid 资源$NotFoundException
【发布时间】:2012-06-06 20:36:48
【问题描述】:

我正在创建一个应用程序,玩家可以在其中将他们的名字输入到编辑文本中。检索此信息并通过附加功能发送到第二个活动。每当我运行它时,我都会收到 Resources$NotFoundException。我很确定这是来自我的代码还是来自我的资源文件夹。

这是我的代码(已更新,没有 TOAST 声明)

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 错误(更新的 LOGCAT 报告):

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

【问题讨论】:

  • 这个错误的原因是荒谬的.. 至少 android 应该给出适当合理的错误信息。我在这个错误上浪费了 2-3 个小时,我应该早点访问这里:(

标签: java android eclipse android-layout android-intent


【解决方案1】:

这是你的第一个 Toast 电话:

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

这里,第二个参数是一个整数(number),所以它认为这是一个字符串ID。尝试将number 替换为number+""

【讨论】:

  • 更好的方法是使用String.valueOf(number)
  • 好的...谢谢,这是我没有发现的错误,但我只是将 Toast 语句放入以查看问题是否发生在 toast 语句之前或之后。当我删除 Toast 语句时,应用程序强制关闭。有什么建议吗?
  • 请更正/删除该 Toast 行并发布新的 LogCat 输出,以便我们查看强制关闭错误的位置。
  • @Drew - 同样,您的 Toast 电话是 Toast.makeText(this, i, Toast.LENGTH_SHORT).show();。由于i 是一个整数,您需要使用Arhimed 或我上面的解决方案将其转换为字符串。
  • @Arhimed 评论解决了我的问题。问题是带有 int 参数而不是 String/Char 序列的文本视图“setText”。使用“String.valueOf”,就是这样。谢谢你们。
猜你喜欢
  • 1970-01-01
  • 2014-02-11
  • 1970-01-01
  • 1970-01-01
  • 2017-03-21
  • 2014-07-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多