Search code examples
androidandroid-layoutdialogandroid-resourcesandroid-radiogroup

android.content.res.Resources$NotFoundException in RadioGroup


I want to build dialog with RadioGroup. When I try open dialog my app crashes and I don't see an alert dialog. This is how I create a dialog with 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();
}

And when I try display this dialog I see this :

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)

layout file:

<?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>

Solution

  • Try using this for an instance:

     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);