我有一个类,用户可以动态生成EditText视图。我打算验证他们检查用户是否继续下一页时是否为空。如果是,则验证触发器会暂停移动到其他页面的过程,直到用户填充他/她创建的EditText字段。验证动态生成的EditTexts
以下是我有:
EditText上一代
int EditTextID = 5000;
insertPoint = findViewById(R.id.questionsContainer);
if(v.getId() == R.id.makeLayoutButton){
//get form template which has an EditText of id "questionAnswerEt"
v1 = vi.inflate(R.layout.form_template, null);
//add it into my view
((LinearLayout) insertPoint).addView(v1);
v1.setId(formParentID);
//get edittext
questionAnswer = (EditText)v1.findViewById(R.id.questionAnswerET);
//set id
questionAnswer.setId(EditTextID);
EditTextID++;
}
验证
if(v.getId() == R.id.bNext){
for(int x = 5000; x <= 5007; x++){
questionAnswer = (EditText)findViewById(x);
String questionAnswerValidator = (String) questionAnswer.getText().toString();
if(questionAnswerValidator.length() == 0){
((EditText) questionAnswer.findViewById(x))
.setError("Question Title is Required!");
}
}
}
循环在5000开始,因为生成EditTexts还有启动手动集ID从5000开始,然后每当用户决定属时增加另一个EditText。然后,我通过引用“questionAnswer”来遍历这些ID来获取EditText。然后,我将questionAnswer(x的id)的字符串值放入字符串“questionAnswerValidator”中。然后检查它是否为空,如果是,它会在适当的EditTexts上产生一个setError消息,这些消息是空的。问题是,当验证开始给我一个空指针异常时,应用程序崩溃。任何线索我要去哪里错了?谢谢。
登录:
08-27 14:27:02.084: W/dalvikvm(16285): threadid=1: thread exiting with uncaught exception (group=0x4166fe18)
08-27 14:27:02.084: E/AndroidRuntime(16285): FATAL EXCEPTION: main
08-27 14:27:02.084: E/AndroidRuntime(16285): Process: com.example.testing, PID: 16285
08-27 14:27:02.084: E/AndroidRuntime(16285): java.lang.NullPointerException
08-27 14:27:02.084: E/AndroidRuntime(16285): at com.example.testing.MakeQuestion.onClick(MakeQuestion.java:212)
08-27 14:27:02.084: E/AndroidRuntime(16285): at android.view.View.performClick(View.java:4480)
08-27 14:27:02.084: E/AndroidRuntime(16285): at android.view.View$PerformClick.run(View.java:18686)
08-27 14:27:02.084: E/AndroidRuntime(16285): at android.os.Handler.handleCallback(Handler.java:733)
08-27 14:27:02.084: E/AndroidRuntime(16285): at android.os.Handler.dispatchMessage(Handler.java:95)
08-27 14:27:02.084: E/AndroidRuntime(16285): at android.os.Looper.loop(Looper.java:157)
08-27 14:27:02.084: E/AndroidRuntime(16285): at android.app.ActivityThread.main(ActivityThread.java:5872)
08-27 14:27:02.084: E/AndroidRuntime(16285): at java.lang.reflect.Method.invokeNative(Native Method)
08-27 14:27:02.084: E/AndroidRuntime(16285): at java.lang.reflect.Method.invoke(Method.java:515)
08-27 14:27:02.084: E/AndroidRuntime(16285): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858)
08-27 14:27:02.084: E/AndroidRuntime(16285): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:674)
08-27 14:27:02.084: E/AndroidRuntime(16285): at dalvik.system.NativeStart.main(Native Method)
@andruboy完成。 – Frisbetarian 2014-08-27 11:29:33
也把按钮单击代码我认为你没有注册按钮onClickListener(this); – MilapTank 2014-08-27 11:31:57
@andruboy它正在注册按钮单击。我有静态EditText字段验证,并在用户点击“bNext”时工作正常。当我添加动态EditTexts的验证时,它开始崩溃。 – Frisbetarian 2014-08-27 11:37:50