android.content.res.Resources$NotFoundException: String resource ID #0x6异常的解决方法

android.content.res.Resources$NotFoundException: String resource ID #0x6错误的解决办法

在开发过程当中遇到这个问题

08-17 18:12:24.835: E/AndroidRuntime(17951): FATAL EXCEPTION: main
08-17 18:12:24.835: E/AndroidRuntime(17951): android.content.res.Resources$NotFoundException: String resource ID #0x0
08-17 18:12:24.835: E/AndroidRuntime(17951): 	at android.content.res.Resources.getText(Resources.java:201)
08-17 18:12:24.835: E/AndroidRuntime(17951): 	at android.widget.TextView.setText(TextView.java:3102)
08-17 18:12:24.835: E/AndroidRuntime(17951): 	at com.yang.listviewclick.adapter.ListViewAdapter.getView(ListViewAdapter.java:65)
08-17 18:12:24.835: E/AndroidRuntime(17951): 	at android.widget.AbsListView.obtainView(AbsListView.java:1452)
08-17 18:12:24.835: E/AndroidRuntime(17951): 	at android.widget.ListView.measureHeightOfChildren(ListView.java:1216)
08-17 18:12:24.835: E/AndroidRuntime(17951): 	at android.widget.ListView.onMeasure(ListView.java:1127)
08-17 18:12:24.835: E/AndroidRuntime(17951): 	at android.view.View.measure(View.java:8313)
08-17 18:12:24.835: E/AndroidRuntime(17951): 	at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138)
08-17 18:12:24.835: E/AndroidRuntime(17951): 	at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1017)
08-17 18:12:24.835: E/AndroidRuntime(17951): 	at android.widget.LinearLayout.measureVertical(LinearLayout.java:386)
08-17 18:12:24.835: E/AndroidRuntime(17951): 	at android.widget.LinearLayout.onMeasure(LinearLayout.java:309)
08-17 18:12:24.835: E/AndroidRuntime(17951): 	at android.view.View.measure(View.java:8313)
08-17 18:12:24.835: E/AndroidRuntime(17951): 	at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138)
08-17 18:12:24.835: E/AndroidRuntime(17951): 	at android.widget.FrameLayout.onMeasure(FrameLayout.java:250)
08-17 18:12:24.835: E/AndroidRuntime(17951): 	at android.view.View.measure(View.java:8313)
08-17 18:12:24.835: E/AndroidRuntime(17951): 	at android.widget.LinearLayout.measureVertical(LinearLayout.java:531)
08-17 18:12:24.835: E/AndroidRuntime(17951): 	at android.widget.LinearLayout.onMeasure(LinearLayout.java:309)
08-17 18:12:24.835: E/AndroidRuntime(17951): 	at android.view.View.measure(View.java:8313)
08-17 18:12:24.835: E/AndroidRuntime(17951): 	at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138)
08-17 18:12:24.835: E/AndroidRuntime(17951): 	at android.widget.FrameLayout.onMeasure(FrameLayout.java:250)
08-17 18:12:24.835: E/AndroidRuntime(17951): 	at android.view.View.measure(View.java:8313)
08-17 18:12:24.835: E/AndroidRuntime(17951): 	at android.view.ViewRoot.performTraversals(ViewRoot.java:839)
08-17 18:12:24.835: E/AndroidRuntime(17951): 	at android.view.ViewRoot.handleMessage(ViewRoot.java:1859)
08-17 18:12:24.835: E/AndroidRuntime(17951): 	at android.os.Handler.dispatchMessage(Handler.java:99)
08-17 18:12:24.835: E/AndroidRuntime(17951): 	at android.os.Looper.loop(Looper.java:130)
08-17 18:12:24.835: E/AndroidRuntime(17951): 	at android.app.ActivityThread.main(ActivityThread.java:3809)
08-17 18:12:24.835: E/AndroidRuntime(17951): 	at java.lang.reflect.Method.invokeNative(Native Method)
08-17 18:12:24.835: E/AndroidRuntime(17951): 	at java.lang.reflect.Method.invoke(Method.java:507)
08-17 18:12:24.835: E/AndroidRuntime(17951): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
08-17 18:12:24.835: E/AndroidRuntime(17951): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
08-17 18:12:24.835: E/AndroidRuntime(17951): 	at dalvik.system.NativeStart.main(Native Method)
源代码如下:

public void compareID(){

    if (userInput.equals(LoginID)){
        //phone screen unlocked
        //continue
        Toast.makeText(ScreenLockActivity.this, "Success!", Toast.LENGTH_SHORT).show();
    }
    else{
        count += 1;
        input.setText("");
        Toast.makeText(ScreenLockActivity.this, count, Toast.LENGTH_SHORT).show();
    }
}
看一下
Toast.makeText(ScreenLockActivity.this, count, Toast.LENGTH_SHORT).show();
的API

android.content.res.Resources$NotFoundException: String resource ID #0x6异常的解决方法
这里text是CharSequence而不是int类型,只要将更改为

count+""
或者
Integer.toString(count)
即可


注意:在开发当中一定不要太相信Android对字符串的处理,同样的,如果你对textView.setText(IntValue)虽然其没有提示类型错误,也会报同样的错误。

因此,对于赋值操作一定要赋予其类型兼容的值。


1楼su1216昨天 10:15
Toast android.widget.Toast.makeText(Context context, int resId, int duration) throws NotFoundExceptionn用于显示的字符串,应该都使用上面的方法,而不是使用参数为CharSequencen这样做是为了国际化。即使只是显示一个变量,可以写成下面的形式n<string name="lockpassword_password_too_short">Password must be at least %d characters</string>
Re: yangzl2008昨天 11:27
回复su1216只是贴出我遇到的一个错误而已,对于Toast 使用CharSequence, int resId都可以,但是使用无意义的int类型就会报错。
Re: su1216昨天 16:15
回复yangzl2008n虽然提供了两个方法,但是不提倡这么使用