检查textEdit是否与字符串资源相同

时间:2014-05-07 12:05:48

标签: android resources android-edittext

我正在尝试让我的应用程序检查已输入textEdit字段的文本与按钮单击时的字符串资源相同,如果是,则显示正确的toast或println,如果不是println或toast说错了:

目前我有这个,在eclipse中没有出现任何错误,但在尝试运行应用程序后,我在LogCat中得到空指针异常错误:

btnCheck.setOnClickListener(new View.OnClickListener(){

            @Override
            public void onClick(View arg0) {
                if(editText1.getText().toString().equals(R.string.correct)){
                    System.out.println("Correct");
                }else{
                    System.out.println("Incorrect");
                }

我知道它不是正确的代码,但是我没有环顾四周,我发现的所有内容都指向了测验应用程序等多个按钮,这不是我想要做的事情

由于

编辑:我按照其他用户的例子做了但是应用程序仍然无法加载,这是logcat输出:

05-07 13:50:01.951: E/AndroidRuntime(32712): Process: com.example.nametest, PID: 32712
05-07 13:50:01.951: E/AndroidRuntime(32712): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.nametest/com.example.nametest.MainActivity}: java.lang.NullPointerException
05-07 13:50:01.951: E/AndroidRuntime(32712):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2305)
05-07 13:50:01.951: E/AndroidRuntime(32712):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2363)
05-07 13:50:01.951: E/AndroidRuntime(32712):    at android.app.ActivityThread.access$900(ActivityThread.java:161)
05-07 13:50:01.951: E/AndroidRuntime(32712):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1265)
05-07 13:50:01.951: E/AndroidRuntime(32712):    at android.os.Handler.dispatchMessage(Handler.java:102)
05-07 13:50:01.951: E/AndroidRuntime(32712):    at android.os.Looper.loop(Looper.java:157)
05-07 13:50:01.951: E/AndroidRuntime(32712):    at android.app.ActivityThread.main(ActivityThread.java:5356)
05-07 13:50:01.951: E/AndroidRuntime(32712):    at java.lang.reflect.Method.invokeNative(Native Method)
05-07 13:50:01.951: E/AndroidRuntime(32712):    at java.lang.reflect.Method.invoke(Method.java:515)
05-07 13:50:01.951: E/AndroidRuntime(32712):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265)
05-07 13:50:01.951: E/AndroidRuntime(32712):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081)
05-07 13:50:01.951: E/AndroidRuntime(32712):    at dalvik.system.NativeStart.main(Native Method)
05-07 13:50:01.951: E/AndroidRuntime(32712): Caused by: java.lang.NullPointerException
05-07 13:50:01.951: E/AndroidRuntime(32712):    at com.example.nametest.MainActivity.onCreate(MainActivity.java:47)
05-07 13:50:01.951: E/AndroidRuntime(32712):    at android.app.Activity.performCreate(Activity.java:5426)
05-07 13:50:01.951: E/AndroidRuntime(32712):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
05-07 13:50:01.951: E/AndroidRuntime(32712):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2269)

第47行是:

btnCheck.setOnClickListener(new View.OnClickListener()

现在我有了应用程序加载,感谢下面的答案,当用户点击检查按钮时应用程序崩溃。 LogCat错误指向该行:

if(editText1.getText().toString().equals(getString(R.string.correct)))

5 个答案:

答案 0 :(得分:1)

取代:

R.string.correct

使用:

getString(R.string.correct);

R.string.correctint是实际字符串资源的关键。

您的活动有一个getString,需要int并返回String

答案 1 :(得分:1)

试试这个

 btnCheck.setOnClickListener(new View.OnClickListener(){

    @Override
    public void onClick(View arg0) {
        if(editText1.getText().toString().equals(getString(R.string.correct))){
            System.out.println("Correct");
        }else{
            System.out.println("Incorrect");
        }

}});

答案 2 :(得分:1)

R.string.correct替换为getResources().getString(R.color.title_color)

希望这有帮助

答案 3 :(得分:0)

vipul的回答是正确的。 我只想补充一点,一般来说,你应该记住Android资源基本上只是Integer值,你必须调用正确的上下文函数来获取实际的对象。 目前您正在将String与Integer(即带有香蕉的苹果)进行比较。

答案 4 :(得分:0)

另一种方式是,您可以在android:tag

中定义要匹配的文字
<EditText android:id="@+id/edittest"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:tag="your_text" />

并与Tag

匹配
btnCheck.setOnClickListener(new View.OnClickListener(){

            @Override
            public void onClick(View arg0) {
                if(editText1.getText().toString().equals(editText1.getTag().toString())){
                    System.out.println("Correct");
                }else{
                    System.out.println("Incorrect");
                }