Я пытаюсь получить значения всех выбранных радиокнопки на нажатие кнопки Submit, но я получаю исключение NullPointer в строке:Ошибка при получении значения выбранных кнопок RADIO
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();
}
}
});
}
}
По-прежнему такая же ошибка – Christine