Android在對話方塊中放置RadioGroup出現的報錯
阿新 • • 發佈:2019-01-29
在Android中若把RadioGroup放置在自定義對話方塊中而且對RadioGroup做出監聽就會出現空指標錯誤,
這是由於RadioGroup找不到自定義對話方塊的xml中的id造成的,若新增如下程式碼可以解決問題
RelativeLayout dialayout=(RelativeLayout)getLayoutInflater().inflate(R.layout.dialog, null);
然後findViewById()方法要加上變數
RadioGroup rg=(RadioGroup)dialayout.findViewById(R.id.rg);
其實不只是RadioGroup放置在自定義對話方塊中會出現問題,其他控制元件也會出現這個問題,都可以用上述方法解決
下面附贈一個方法,可以建立帶有確定和取消按鈕的對話方塊,以及對話方塊中對RadioGroup中的radioButton子元素進行判斷
方法ple():
public void ple() { int w_radioButton=null; RelativeLayout dialayout=(RelativeLayout)getLayoutInflater().inflate(R.layout.dialog, null); rg=(RadioGroup)dialayout.findViewById(R.id.rg); rg.setOnCheckedChangeListener(new OnCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup arg0, int arg1) { // TODO Auto-generated method stub if(arg1==R.id.radioButton1){ w_radioButton=1; }else { if(arg1==R.id.radioButton2){ w_radioButton=2; }else{ if(arg1==R.id.radioButton3) { w_radioButton=3; } else { if(arg1==R.id.radioButton4) { w_radioButton=4; } else { if(arg1==R.id.radioButton5) { w_radioButton=5; } } } } } } }); new AlertDialog.Builder(this).setTitle("title").setIcon(R.drawable.time).setView(dialayout) .setPositiveButton("確定", new OnClickListener() { @Override public void onClick(DialogInterface dialog,int which) { } }) .setNegativeButton("取消", new OnClickListener() { @Override public void onClick(DialogInterface dialog,int which) { // TODO Auto-generated method stub } }).create().show(); }
下面是layout中的dialog.xml
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <RadioGroup android:id="@+id/rg" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:orientation="vertical" android:layout_alignParentTop="true" android:layout_margin="10dp" > <RadioButton android:id="@+id/radioButton1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text=" 111" android:textColor="#cbd5f3" /> <RadioButton android:id="@+id/radioButton2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text=" 222" android:textColor="#cbd5f3"/> <RadioButton android:id="@+id/radioButton3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text=" 333" android:textColor="#cbd5f3"/> <RadioButton android:id="@+id/radioButton4" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text=" 444" android:textColor="#cbd5f3" /> <RadioButton android:id="@+id/radioButton5" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text=" 555" android:textColor="#cbd5f3" /> </RadioGroup> </RelativeLayout>