Android 检索所选单选按钮的值时出错

Android 检索所选单选按钮的值时出错,android,Android,我试图在单击“提交”按钮时获取所有选定radiobutton的值,但在第行中出现NULLPOINTER异常: String selection = (String) btn.getText(); 错误: 05-12 12:54:52.261: E/AndroidRuntime(14113): FATAL EXCEPTION: main 05-12 12:54:52.261: E/AndroidRuntime(14113): Process: com.androidhub4you.multile

我试图在单击“提交”按钮时获取所有选定radiobutton的值,但在第行中出现NULLPOINTER异常:

String selection = (String) btn.getText();
错误:

05-12 12:54:52.261: E/AndroidRuntime(14113): FATAL EXCEPTION: main
05-12 12:54:52.261: E/AndroidRuntime(14113): Process: com.androidhub4you.multilevellistview, PID: 14113
05-12 12:54:52.261: E/AndroidRuntime(14113): java.lang.NullPointerException
05-12 12:54:52.261: E/AndroidRuntime(14113):    at com.androidhub4you.multilevellistview.MainActivity$5.onClick(MainActivity.java:249)
05-12 12:54:52.261: E/AndroidRuntime(14113):    at android.view.View.performClick(View.java:4456)
05-12 12:54:52.261: E/AndroidRuntime(14113):    at android.view.View$PerformClick.run(View.java:18465)
05-12 12:54:52.261: E/AndroidRuntime(14113):    at android.os.Handler.handleCallback(Handler.java:733)
05-12 12:54:52.261: E/AndroidRuntime(14113):    at android.os.Handler.dispatchMessage(Handler.java:95)
05-12 12:54:52.261: E/AndroidRuntime(14113):    at android.os.Looper.loop(Looper.java:136)
05-12 12:54:52.261: E/AndroidRuntime(14113):    at android.app.ActivityThread.main(ActivityThread.java:5086)
05-12 12:54:52.261: E/AndroidRuntime(14113):    at java.lang.reflect.Method.invokeNative(Native Method)
05-12 12:54:52.261: E/AndroidRuntime(14113):    at java.lang.reflect.Method.invoke(Method.java:515)
05-12 12:54:52.261: E/AndroidRuntime(14113):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
05-12 12:54:52.261: E/AndroidRuntime(14113):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
05-12 12:54:52.261: E/AndroidRuntime(14113):    at dalvik.system.NativeStart.main(Native Method)
提交按钮代码:

   submitbutton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                if(radioGroup.getCheckedRadioButtonId()!=-1){
                    String selection = btn.getText().toString();
                    Toast.makeText(getApplicationContext(), "You are submitting : " + selection, Toast.LENGTH_LONG).show();
                }

            }
        });
完整代码:

public class MainActivity extends Activity {

    private ArrayList<Product>pProductArrayList;
    private ArrayList<SubCategory>pSubItemArrayList;
    private ArrayList<SubCategory>pSubItemArrayList2;
    private LinearLayout mLinearListView;
    boolean isFirstViewClick=false;
    boolean isSecondViewClick=false;
    RadioButton rdbtn;
    private RadioGroup radioGroup;
    private RadioButton btn;
    private Button submitbutton;
    private String[] shownames = {"AA", "BB", "CC"};                                              //Dynamic Show Names
    private String[] application = {"DD", "EE", "FF", "GG"};                    //Dynamic Application Names
    private String[] device = {"HH", "II", "JJ", "KK"};                                                //Dynamic Device Names
    private String text1;
    private String text2;
    private LayoutInflater inflater3;
    private LayoutInflater inflater4;
    private View mLinearView3;
    private View mLinearView4;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mLinearListView = (LinearLayout) findViewById(R.id.linear_listview);

        submitbutton = (Button)findViewById(R.id.submitbutton);

        ArrayList<ItemList> mItemListArray=new ArrayList<ItemList>();
        mItemListArray.add(new ItemList("", ""));  

        ArrayList<ItemList> mItemListArray2=new ArrayList<ItemList>();
        mItemListArray2.add(new ItemList("", ""));  

        pSubItemArrayList=new ArrayList<SubCategory>();
        pSubItemArrayList2=new ArrayList<SubCategory>();

        pSubItemArrayList.add(new SubCategory("Select Application/Device", mItemListArray));                                       //Static Header
        pSubItemArrayList2.add(new SubCategory("Select Device", mItemListArray2));                                                 //Static Header

        pProductArrayList=new ArrayList<Product>();

        for (int i = 0; i < shownames.length; i++){
            pProductArrayList.add(new Product(shownames[i], pSubItemArrayList));
        }

        for (int i = 0; i < pProductArrayList.size(); i++) {

            LayoutInflater inflater = null;
            inflater = (LayoutInflater) getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            View mLinearView = inflater.inflate(R.layout.row_first, null);

            final TextView mProductName = (TextView) mLinearView.findViewById(R.id.textViewName);
            final RelativeLayout mLinearFirstArrow=(RelativeLayout)mLinearView.findViewById(R.id.linearFirst);
            final ImageView mImageArrowFirst=(ImageView)mLinearView.findViewById(R.id.imageFirstArrow);
            final LinearLayout mLinearScrollSecond=(LinearLayout)mLinearView.findViewById(R.id.linear_scroll);

            if(isFirstViewClick==false){
            mLinearScrollSecond.setVisibility(View.GONE);
            mImageArrowFirst.setBackgroundResource(R.drawable.arw_lt);
            }

            else{
                mLinearScrollSecond.setVisibility(View.VISIBLE);
                mImageArrowFirst.setBackgroundResource(R.drawable.arw_down);
            }

            mLinearFirstArrow.setOnTouchListener(new OnTouchListener() {

                @Override
                public boolean onTouch(View v, MotionEvent event) {

                    if(isFirstViewClick==false){
                        isFirstViewClick=true;
                        mImageArrowFirst.setBackgroundResource(R.drawable.arw_down);
                        mLinearScrollSecond.setVisibility(View.VISIBLE);

                    }else{
                        isFirstViewClick=false;
                        mImageArrowFirst.setBackgroundResource(R.drawable.arw_lt);
                        mLinearScrollSecond.setVisibility(View.GONE);   
                    }
                    return false;
                } 
            });


            final String name = pProductArrayList.get(i).getpName();
            mProductName.setText(name);

            /**
             * 
             */
            for (int j = 0; j < pProductArrayList.get(i).getmSubCategoryList().size(); j++) {

                LayoutInflater inflater2 = null;
                inflater2 = (LayoutInflater) getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                View mLinearView2 = inflater2.inflate(R.layout.row_second, null);

                TextView mSubItemName = (TextView) mLinearView2.findViewById(R.id.textViewTitle);
                final RelativeLayout mLinearSecondArrow=(RelativeLayout)mLinearView2.findViewById(R.id.linearSecond);
                final ImageView mImageArrowSecond=(ImageView)mLinearView2.findViewById(R.id.imageSecondArrow);
                final LinearLayout mLinearScrollThird=(LinearLayout)mLinearView2.findViewById(R.id.linear_scroll_third);

                if(isSecondViewClick==false){
                    mLinearScrollThird.setVisibility(View.GONE);
                    mImageArrowSecond.setBackgroundResource(R.drawable.arw_lt);
                    }
                    else{
                        mLinearScrollThird.setVisibility(View.VISIBLE);
                        mImageArrowSecond.setBackgroundResource(R.drawable.arw_down);
                    }

                mLinearSecondArrow.setOnTouchListener(new OnTouchListener() {

                        @Override
                        public boolean onTouch(View v, MotionEvent event) {

                            if(isSecondViewClick==false){
                                isSecondViewClick=true;
                                mImageArrowSecond.setBackgroundResource(R.drawable.arw_down);
                                mLinearScrollThird.setVisibility(View.VISIBLE);

                            }else{
                                isSecondViewClick=false;
                                mImageArrowSecond.setBackgroundResource(R.drawable.arw_lt);
                                mLinearScrollThird.setVisibility(View.GONE);    
                            }
                            return false;
                        } 
                    });


                final String catName = pProductArrayList.get(i).getmSubCategoryList().get(j).getpSubCatName();
                mSubItemName.setText(catName);


                for (int k = 0; k < pProductArrayList.get(i).getmSubCategoryList().get(j).getmItemListArray().size(); k++) {

                        inflater3 = null;
                        inflater3 = (LayoutInflater) getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                        mLinearView3 = inflater3.inflate(R.layout.row_third, null);

                        radioGroup = (RadioGroup) mLinearView3.findViewById(R.id.myRadioGroup);

                        for(int m=0;m<application.length;m++) {
                               rdbtn = new RadioButton(this);
                               rdbtn.setId(m);
                               rdbtn.setText(application[m]);
                               radioGroup.addView(rdbtn);
                        }


                        radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
                               public void onCheckedChanged(RadioGroup mRadioGroup, int checkedId) {
                                    for(int i=0; i<mRadioGroup.getChildCount(); i++) {
                                         btn = (RadioButton) mRadioGroup.getChildAt(i);
                                         int t=mRadioGroup.getId();
                                         System.out.println(t);

                                         if(btn.getId() == checkedId) {
                                              text1 = btn.getText().toString();
                                              Toast.makeText(getApplicationContext(), "You selected : " + text1 + " from : " + mProductName.getText().toString(), Toast.LENGTH_SHORT).show();
                                              return;
                                         }
                                    }
                               }
                          });

                        mLinearScrollThird.addView(mLinearView3);

                }


                for (int l = 0; l < pProductArrayList.get(i).getmSubCategoryList().get(j).getmItemListArray().size(); l++) {

                    inflater4 = null;
                    inflater4 = (LayoutInflater) getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                    mLinearView4 = inflater4.inflate(R.layout.row_third, null);

                    radioGroup = (RadioGroup) mLinearView4.findViewById(R.id.myRadioGroup);

                    for(int m=0;m<device.length;m++) {
                           rdbtn = new RadioButton(this);
                           rdbtn.setId(m);
                           rdbtn.setText(device[m]);
                           radioGroup.addView(rdbtn);
                    }

                    radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
                           public void onCheckedChanged(RadioGroup mRadioGroup, int checkedId) {
                                for(int i=0; i<mRadioGroup.getChildCount(); i++) {
                                     btn = (RadioButton) mRadioGroup.getChildAt(i);
                                     int t=mRadioGroup.getId();
                                     System.out.println(t);

                                     if(btn.getId() == checkedId) {
                                          text2 = btn.getText().toString();
                                          Toast.makeText(getApplicationContext(), "You selected : " + text2 + " from : " + mProductName.getText().toString(), Toast.LENGTH_SHORT).show();
                                          return;
                                     }
                                }
                           }
                      });

                      mLinearScrollThird.addView(mLinearView4);

                }

                mLinearScrollSecond.addView(mLinearView2);

            }

            mLinearListView.addView(mLinearView);
        }       

        submitbutton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                if(radioGroup.getCheckedRadioButtonId()!=-1){
                    String selection = btn.getText().toString();
                    Toast.makeText(getApplicationContext(), "You are submitting : " + selection, Toast.LENGTH_LONG).show();
                }

            }
        });

    }



}
公共类MainActivity扩展活动{
私有arraylistproductarraylist;
私有ArrayListSubItemArrayList;
私有ArrayListSubItemArrayList2;
private LinearLayout MLILearlistView;
布尔值isFirstViewClick=false;
布尔值isSecondViewClick=false;
无线按钮rdbtn;
私人放射组放射组;
专用无线按钮;
私人按钮提交按钮;
私有字符串[]shownames={“AA”、“BB”、“CC”};//动态显示名称
私有字符串[]应用程序={“DD”、“EE”、“FF”、“GG”};//动态应用程序名称
私有字符串[]设备={“HH”、“II”、“JJ”、“KK”};//动态设备名称
私有字符串text1;
私有字符串text2;
私家车充气机3;
私家车充气机4;
私有视图3;
私有视图4;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mLinearListView=(LinearLayout)findViewById(R.id.linear\u listview);
submitbutton=(按钮)findViewById(R.id.submitbutton);
ArrayList MitemlistStarray=新的ArrayList();
添加(新项目列表(“,”);
ArrayList MitemlistStarray2=新的ArrayList();
添加(新项目列表(“,”);
pSubItemArrayList=新的ArrayList();
pSubItemArrayList2=新的ArrayList();
pSubItemArrayList.add(新的子类别(“选择应用程序/设备”,mitemlistaray));//静态标题
pSubItemArrayList2.add(新的子类别(“选择设备”,mitemlistaray2));//静态标题
pProductArrayList=新的ArrayList();
对于(int i=0;i private RadioButton btn;




 submitbutton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

             if(radioGroup.getCheckedRadioButtonId()!=-1){
                int id= radioGroup.getCheckedRadioButtonId();
                btn = (RadioButton)radioGroup.getChildAt(id);
                String selection = btn.getText().toString();
                Toast.makeText(getApplicationContext(), "You are submitting : " + selection, Toast.LENGTH_LONG).show();
             }


        }
    });
 if(radioGroup.getCheckedRadioButtonId()!=-1){
                        int id= radioGroup.getCheckedRadioButtonId();
                        RadioButton btn = (RadioButton)radioGroup.findViewById(id);                       
                        String selection = btn.getText().toString();
                        Toast.makeText(getApplicationContext(), "You are submitting : " + selection, Toast.LENGTH_LONG).show();
                     }
if(radioGroup.getCheckedRadioButtonId()!=-1) {
    int ID = radioGroup.getCheckedRadioButtonId();
    RadioButton rbSelection = (RadioButton) findViewById(id);
    String selection = rbSelection.getText().toString();
}
String selection = (RadioButton) findViewById(radioGroup.getCheckedRadioButtonId())).getText().toString();