错误:ResourcesNotFoundException:字符串资源ID#0x1

时间:2014-02-16 08:25:42

标签: android

尝试使用simpledatetime格式将以下字符串解析为日期时间时,会出现如下错误:

02-16 13:07:40.455: E/AndroidRuntime(676): FATAL EXCEPTION: main
02-16 13:07:40.455: E/AndroidRuntime(676): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.timer/com.example.timer.MainActivity}: android.content.res.Resources$NotFoundException: String resource ID #0x1

我写的代码如下。请告诉我这个错误的可能原因是什么。

    String date1="17-Feb-14 12:54:34 AM";

    String date2="15-Feb-14 9:55:23 PM";


    SimpleDateFormat sdf=new SimpleDateFormat("dd-MMM-yy hh:mm:ss aa");
    try {
        Date dt1=sdf.parse(date1);
        Date dt2=sdf.parse(date2);
    int value=dt1.compareTo(dt2);

    Toast.makeText(MainActivity.this, value, Toast.LENGTH_LONG).show();

    } catch (ParseException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

我从服务器获取此日期和时间格式作为字符串。所以我需要将其转换为日期和时间以便在客户端进行处理。请告诉我怎么做。

3 个答案:

答案 0 :(得分:3)

Toast.makeText(MainActivity.this, String.valueOf(value), Toast.LENGTH_LONG).show();

您正尝试在Toast

中使用整数作为消息

P.S。您可以使用int作为邮件,但只有当您在R课程中申请资源时,请在此处查看http://developer.android.com/reference/android/widget/Toast.html#makeText%28android.content.Context,%20int,%20int%29

答案 1 :(得分:1)

您对int使用了value,但Toast.makeText()需要字符串或字符串资源的ID(例如R.string.helloWorld)。

更改

Toast.makeText(MainActivity.this, value, Toast.LENGTH_LONG).show();

Toast.makeText(MainActivity.this, value.toString(), Toast.LENGTH_LONG).show();

答案 2 :(得分:1)

原因,第二个参数是int / String类型。如果您传递了指向任何资源的int,那么Android会检查资源id中是否存在此R,否则会抛出ResourcesNotFound

Android生成id中每个资源的R.java

所以在你的情况下,你已经传递了整数值,并且android试图查看id中不可用的R.java

所以你必须使用.toString()方法将整数转换为字符串。

这是方法重载,您可以在其中传递资源ID或第二个参数中的任何字符串。