RadioGroup中的android.content.res.Resources $ NotFoundException

时间:2017-04-05 06:29:12

标签: android android-layout dialog android-resources android-radiogroup

我想与RadioGroup建立对话框。当我尝试打开对话框时,我的应用程序崩溃,我没有看到警报对话框。这就是我使用RadioGroup

创建对话框的方法
private void showRadioButtonDialog() {

    final Dialog dialog = new Dialog(GenerateRaportActivity.this);
    dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
    dialog.setContentView(R.layout.radiobutton_dialog);
    List<String> stringList = new ArrayList<>();
    for (int i = 0; i < 5; i++) {
        stringList.add("RadioButton " + (i + 1));
    }
    RadioGroup rg = (RadioGroup) dialog.findViewById(R.id.radio_group);

    for (int i = 0; i < stringList.size(); i++) {
        RadioButton rb = new RadioButton(GenerateRaportActivity.this);
        rb.setText(stringList.get(i));
        rg.addView(rb);
    }
    dialog.show();
}

当我尝试显示此对话框时,我看到了:

FATAL EXCEPTION: main

Process: com.maps, PID: 901
android.content.res.Resources$NotFoundException: File res/drawable/abc_btn_radio_material.xml from drawable resource ID #0x7f020018
   at android.content.res.Resources.loadDrawable(Resources.java:3443)
   at android.content.res.TypedArray.getDrawable(TypedArray.java:602)
   at android.widget.CompoundButton.<init>(CompoundButton.java:78)
   at android.widget.RadioButton.<init>(RadioButton.java:63)
   at android.widget.RadioButton.<init>(RadioButton.java:59)
   at android.widget.RadioButton.<init>(RadioButton.java:55)
   at com.smok.maps.Activity.GenerateRaportActivity.showRadioButtonDialog(GenerateRaportActivity.java:162)
   at com.smok.maps.Activity.GenerateRaportActivity.access$000(GenerateRaportActivity.java:31)
   at com.smok.maps.Activity.GenerateRaportActivity$1.onClick(GenerateRaportActivity.java:86)
   at android.view.View.performClick(View.java:4640)
   at android.view.View$PerformClick.run(View.java:19425)
   at android.os.Handler.handleCallback(Handler.java:733)
   at android.os.Handler.dispatchMessage(Handler.java:95)
   at android.os.Looper.loop(Looper.java:146)
   at android.app.ActivityThread.main(ActivityThread.java:5593)
   at java.lang.reflect.Method.invokeNative(Native Method)
   at java.lang.reflect.Method.invoke(Method.java:515)
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)
   at dalvik.system.NativeStart.main(Native Method)

布局文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <RadioGroup    
        android:id="@+id/radio_group"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="center_vertical"
        android:orientation="vertical">    
    </RadioGroup>

</LinearLayout>

1 个答案:

答案 0 :(得分:3)

尝试将其用于实例:

 RadioGroup dynamicRadiogroup = new RadioGroup(MainActivity.this);
 RadioButton radiobutton1 = new RadioButton(MainActivity.this);
 RadioButton radiobutton2 = new RadioButton(MainActivity.this);
 RadioButton radiobutton3 = new RadioButton(MainActivity.this);
 RelativeLayout relativelayout = 
                    (RelativeLayout)findViewById(R.id.relativelayout1);

 radiobutton1.setText("Android");
 radiobutton2.setText("PHP");
 radiobutton3.setText("WordPress");

 dynamicRadiogroup.addView(radiobutton1);
 dynamicRadiogroup.addView(radiobutton2);
 dynamicRadiogroup.addView(radiobutton3);

 RelativeLayout.LayoutParams layoutparams = new RelativeLayout.LayoutParams
 (LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
 dynamicRadiogroup.setLayoutParams(layoutparams);
 relativelayout.addView(dynamicRadiogroup);