我正在尝试让我的应用程序检查已输入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)))
答案 0 :(得分:1)
取代:
R.string.correct
使用:
getString(R.string.correct);
R.string.correct
,int
是实际字符串资源的关键。
您的活动有一个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");
}