2014-02-16 52 views
0

我试图让用户在我的应用程序中创建一个调查,但我正在努力与我的一块代码。用户可以点击“添加答案”,它会添加一个RadioButton/EditText。然后点击“删除答案”,它应该删除这些。它用于删除已添加的第一个Radiobutton/RditText,但如果我已经添加了2个或更多RadioButton,则会引发错误。在Android中添加/删除RadioButton/EditText

任何想法我的代码有什么问题?

mAddAnswer = (Button) v.findViewById(R.id.addAnswer); 
mAddAnswer.setOnClickListener(new View.OnClickListener() { 

    @Override 
    public void onClick(View v) { 
     // TODO Auto-generated method stub 
     RadioButton question = new RadioButton(getActivity().getApplicationContext()); 
     question.setId(newQuestionRadioId); 
     newQuestionRadioId += 1; 
     mAnswersGroup.addView(question); 

     EditText answer = new EditText(getActivity().getApplicationContext()); 
     answer.setInputType(InputType.TYPE_CLASS_TEXT); 
     answer.setId(newQuestionId); 
     newQuestionId += 1; 
     answer.setHint("Enter answer"); 
     mAnswerHolder.addView(answer); 
     questionNumber += 1; 
     } 
    }); 

mRemoveAnswer = (Button) v.findViewById(R.id.removeAnswer); 
mRemoveAnswer.setOnClickListener(new View.OnClickListener() { 

    @Override 
    public void onClick(View v) { 
     // TODO Auto-generated method stub 
     if (mAnswersGroup.getChildCount() > 1) { 
      mAnswersGroup.removeViewAt(newQuestionRadioId - 1); 
      mAnswerHolder.removeViews(questionNumber - 1, questionNumber - 1); 
      newQuestionId -= 1; 
      newQuestionRadioId -= 1; 
      questionNumber -= 1; 
     }   
    } 
}); 

的logcat:

02-16 16:39:49.295: E/AndroidRuntime(2532): FATAL EXCEPTION: main 
02-16 16:39:49.295: E/AndroidRuntime(2532): java.lang.NullPointerException 
02-16 16:39:49.295: E/AndroidRuntime(2532): at android.view.ViewGroup.removeViewsInternal(ViewGroup.java:2231) 
02-16 16:39:49.295: E/AndroidRuntime(2532): at android.view.ViewGroup.removeViews(ViewGroup.java:2179) 
02-16 16:39:49.295: E/AndroidRuntime(2532): at com.example.surveymetest.AddQuestionFragment$2.onClick(AddQuestionFragment.java:106) 
02-16 16:39:49.295: E/AndroidRuntime(2532): at android.view.View.performClick(View.java:2485) 
02-16 16:39:49.295: E/AndroidRuntime(2532): at android.view.View$PerformClick.run(View.java:9080) 
02-16 16:39:49.295: E/AndroidRuntime(2532): at android.os.Handler.handleCallback(Handler.java:587) 
02-16 16:39:49.295: E/AndroidRuntime(2532): at android.os.Handler.dispatchMessage(Handler.java:92) 
02-16 16:39:49.295: E/AndroidRuntime(2532): at android.os.Looper.loop(Looper.java:130) 
02-16 16:39:49.295: E/AndroidRuntime(2532): at android.app.ActivityThread.main(ActivityThread.java:3683) 
02-16 16:39:49.295: E/AndroidRuntime(2532): at java.lang.reflect.Method.invokeNative(Native Method) 
02-16 16:39:49.295: E/AndroidRuntime(2532): at java.lang.reflect.Method.invoke(Method.java:507) 
02-16 16:39:49.295: E/AndroidRuntime(2532): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
02-16 16:39:49.295: E/AndroidRuntime(2532): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
02-16 16:39:49.295: E/AndroidRuntime(2532): at dalvik.system.NativeStart.main(Native Method) 
+0

你能提供更多关于你接收到什么错误的细节吗? –

+0

logcat的副本会很好。 – NasaGeek

+0

对不起,现在附上。 –

回答

1

我觉得空ponter可能发生的,因为removeViews

的方法removeViews在开发者网站定义如下

removeViews(int start, int count) 

其中的参数

start the first position in the group of the range of views to remove 
count the number of views to remove 

计数应该是没有意见,你想从视图组中删除。

+0

Doh。非常正确! –

+0

我很高兴,如果它帮助你... – Priya