Reputation: 342
I am creating a custom dialog fragment
with a radiogroup
inside. I am getting an error in the line
rdoGrp.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener()
As I've seen in my research the RadioGroup.OnCheckedChangeListener()
should just be OnCheckedChangeListener()
but android studio detects it as an error and tell that the fix is to turn it to RadioGroup.OnCheckedChangeListener()
here's the error
FATAL EXCEPTION: main Process: com.integritynet.lukslofts.services, PID: 10341 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.integritynet.lukslofts.services/com.integritynet.lukslofts.services.main2}: java.lang.NullPointerException at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2429) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2493) at android.app.ActivityThread.access$800(ActivityThread.java:166) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1283) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:136) at android.app.ActivityThread.main(ActivityThread.java:5584) 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:1268) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084) at dalvik.system.NativeStart.main(Native Method) Caused by: java.lang.NullPointerException at com.integritynet.lukslofts.services.fragment.layoutChooserFragment.onCreateView(layoutChooserFragment.java:39) at android.app.Fragment.performCreateView(Fragment.java:1700) at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:890) at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1062) at android.app.BackStackRecord.run(BackStackRecord.java:684) at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1447) at android.app.Activity.performStart(Activity.java:5456) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2402) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2493) at android.app.ActivityThread.access$800(ActivityThread.java:166) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1283) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:136) at android.app.ActivityThread.main(ActivityThread.java:5584) 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:1268) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084) at dalvik.system.NativeStart.main(Native Method)
here is my code:
public class layoutChooserFragment extends DialogFragment {
Context ctx;
String rdo;
public layoutChooserFragment(){
}
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState){
View vi = inflater.inflate(R.layout.layout_picker, container);
getDialog().setTitle(R.string.txtLayoutChooser);
final CheckBox cboRemember = (CheckBox)vi.findViewById(R.id.cboRemember);
RadioGroup rdoGrp = (RadioGroup)vi.findViewById(R.id.rdoGrpPckr);
final RadioButton rdoGrid = (RadioButton)vi.findViewById(R.id.rdoGrid);
final RadioButton rdoTab = (RadioButton)vi.findViewById(R.id.rdoTab);
rdoGrp.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
if (rdoTab.isChecked()) {
if (cboRemember.isChecked()) {
rdo = "tab";
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(ctx);
SharedPreferences.Editor editor = settings.edit();
editor.putString("chosenLayout", rdo);
editor.commit();
Log.d("tag", "chosenLayout: " + rdo);
}
Intent i = new Intent(ctx, MainActivity.class);
startActivity(i);
} else if (rdoGrid.isChecked()) {
if (cboRemember.isChecked()) {
Intent i = new Intent(ctx, main2.class);
startActivity(i);
rdo = "grid";
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(ctx);
SharedPreferences.Editor editor = settings.edit();
editor.putString("chosenLayout", rdo);
editor.commit();
Log.d("tag", "chosenLayout: " + rdo);
}
Intent i = new Intent(ctx, servicesGridStyle.class);
startActivity(i);
}
}
});
//dlg.show();
return vi;
}
}
Here's the Layout:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="5dp">
<RadioGroup
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/rdoGrpPckr">
<RadioButton
android:paddingLeft="5dp"
android:paddingRight="5dp"
android:button="@null"
android:drawableRight="@android:drawable/btn_radio"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/txtTab"
android:id="@+id/rdoTab"
android:textSize="29sp" />
<RadioButton
android:paddingLeft="5dp"
android:paddingRight="5dp"
android:button="@null"
android:drawableRight="@android:drawable/btn_radio"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/txtGrid"
android:id="@+id/rdoGrid"
android:textSize="29sp" />
</RadioGroup>
<CheckBox
android:paddingLeft="5dp"
android:paddingRight="5dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/txtRememberChoice"
android:id="@+id/cboRemember"
android:textSize="20sp" />
</LinearLayout>
Upvotes: 3
Views: 900
Reputation: 794
Im assuming that you are overriding
@Override
public void onCheckedChanged(RadioGroup group, int checkedId)
{
Inside of your
rdoGrp.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {}
right?
I'm checking an app I did where I call from onCreate a custom function setListeners();
where I set all the listeners.
Are you calling this functions from you onCreate? Is your radiobutton inizialized globally?
Upvotes: 0
Reputation: 342
here's the layout
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="5dp">
<RadioGroup
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/rdoGrpPckr">
<RadioButton
android:paddingLeft="5dp"
android:paddingRight="5dp"
android:button="@null"
android:drawableRight="@android:drawable/btn_radio"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/txtTab"
android:id="@+id/rdoTab"
android:textSize="29sp" />
<RadioButton
android:paddingLeft="5dp"
android:paddingRight="5dp"
android:button="@null"
android:drawableRight="@android:drawable/btn_radio"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/txtGrid"
android:id="@+id/rdoGrid"
android:textSize="29sp" />
</RadioGroup>
<CheckBox
android:paddingLeft="5dp"
android:paddingRight="5dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/txtRememberChoice"
android:id="@+id/cboRemember"
android:textSize="20sp" />
</LinearLayout>
Upvotes: 0
Reputation: 301
you have to use
rdoGrp.setOnCheckedChangeListener(new OnCheckedChangeListener() {}
rather than
rdoGrp.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {}
Upvotes: 1
Reputation:
The cause of your issue is that you don't have R.id.rdoGrpPckr
in your layout. Maybe you have another RadioGroup but with a little different id. Check out your layout xml and correct in order to fix your issue.
Also please use standard Java class naming conventions
for your class name LayoutChooserFragment.
Upvotes: 0