rupesh
rupesh

Reputation: 2891

AlertDialog singleChoiceItem NullPointerException

Hi I am keep getting this exception. Below is my code. Please help me to solve this problem:

private void openDeleteCustomProfileDialog(String[] names) {

    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setTitle(R.string.delete_profile_title);
    if (names.length > 0) {
    builder.setMessage(R.string.delete_no_custom_profile);
    builder.setCancelable(false);
    builder.setSingleChoiceItems(names, -1, new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialogInterface, int which) {
            Toast.makeText(AudioFX.this, "which: " + which, Toast.LENGTH_LONG).show();
        }
    });

    builder.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialogInterface, int which) {
            dialogInterface.dismiss();
        }
    });
    builder.setPositiveButton(R.string.delete, new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialogInterface, int which) {
            dialogInterface.dismiss();
        }
    });
    } else {
        builder.setMessage(R.string.delete_no_custom_profile);
        builder.setNegativeButton(R.string.done, new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                dialogInterface.dismiss();
            }
        });
   }

    builder.create().show();
}

Log:

01-07 04:40:06.619: E/AndroidRuntime(2700): java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.Object.toString()' on a null object reference
01-07 04:40:06.619: E/AndroidRuntime(2700):     at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:394)

01-07 04:40:06.619: E/AndroidRuntime(2700):     at android.widget.ArrayAdapter.getView(ArrayAdapter.java:362)
01-07 04:40:06.619: E/AndroidRuntime(2700):     at android.widget.AbsListView.obtainView(AbsListView.java:2467)
01-07 04:40:06.619: E/AndroidRuntime(2700):     at android.widget.ListView.measureHeightOfChildren(ListView.java:1286)
01-07 04:40:06.619: E/AndroidRuntime(2700):     at android.widget.ListView.onMeasure(ListView.java:1194)
01-07 04:40:06.619: E/AndroidRuntime(2700):     at android.view.View.measure(View.java:17915)
01-07 04:40:06.619: E/AndroidRuntime(2700):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5698)
01-07 04:40:06.619: E/AndroidRuntime(2700):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:465)
01-07 04:40:06.619: E/AndroidRuntime(2700):     at android.view.View.measure(View.java:17915)
01-07 04:40:06.619: E/AndroidRuntime(2700):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5698)
01-07 04:40:06.619: E/AndroidRuntime(2700):     at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1692)
01-07 04:40:06.619: E/AndroidRuntime(2700):     at android.widget.LinearLayout.measureVertical(LinearLayout.java:760)
01-07 04:40:06.619: E/AndroidRuntime(2700):     at android.widget.LinearLayout.onMeasure(LinearLayout.java:629)
01-07 04:40:06.619: E/AndroidRuntime(2700):     at android.view.View.measure(View.java:17915)
01-07 04:40:06.619: E/AndroidRuntime(2700):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5698)
01-07 04:40:06.619: E/AndroidRuntime(2700):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:465)
01-07 04:40:06.619: E/AndroidRuntime(2700):     at android.view.View.measure(View.java:17915)
01-07 04:40:06.619: E/AndroidRuntime(2700):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5698)
01-07 04:40:06.619: E/AndroidRuntime(2700):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:465)
01-07 04:40:06.619: E/AndroidRuntime(2700):     at android.view.View.measure(View.java:17915)
01-07 04:40:06.619: E/AndroidRuntime(2700):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5698)
01-07 04:40:06.619: E/AndroidRuntime(2700):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:465)
01-07 04:40:06.619: E/AndroidRuntime(2700):     at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2728)
01-07 04:40:06.619: E/AndroidRuntime(2700):     at android.view.View.measure(View.java:17915)
01-07 04:40:06.619: E/AndroidRuntime(2700):     at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2421)
01-07 04:40:06.619: E/AndroidRuntime(2700):     at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1391)
01-07 04:40:06.619: E/AndroidRuntime(2700):     at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1647)
01-07 04:40:06.619: E/AndroidRuntime(2700):     at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1301)
01-07 04:40:06.619: E/AndroidRuntime(2700):     at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6676)
01-07 04:40:06.619: E/AndroidRuntime(2700):     at android.view.Choreographer$CallbackRecord.run(Choreographer.java:800)
01-07 04:40:06.619: E/AndroidRuntime(2700):     at android.view.Choreographer.doCallbacks(Choreographer.java:603)
01-07 04:40:06.619: E/AndroidRuntime(2700):     at android.view.Choreographer.doFrame(Choreographer.java:572)

01-07 04:40:06.619: E/AndroidRuntime(2700):     at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:786)
01-07 04:40:06.619: E/AndroidRuntime(2700):     at android.os.Handler.handleCallback(Handler.java:815)
01-07 04:40:06.619: E/AndroidRuntime(2700):     at android.os.Handler.dispatchMessage(Handler.java:104)
01-07 04:40:06.619: E/AndroidRuntime(2700):     at android.os.Looper.loop(Looper.java:194)
01-07 04:40:06.619: E/AndroidRuntime(2700):     at android.app.ActivityThread.main(ActivityThread.java:5616)
01-07 04:40:06.619: E/AndroidRuntime(2700):     at java.lang.reflect.Method.invoke(Native Method)
01-07 04:40:06.619: E/AndroidRuntime(2700):     at java.lang.reflect.Method.invoke(Method.java:372)
01-07 04:40:06.619: E/AndroidRuntime(2700):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:959)
01-07 04:40:06.619: E/AndroidRuntime(2700):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:754)

Upvotes: 0

Views: 141

Answers (3)

Amy
Amy

Reputation: 4032

Change This:

You are trying to set title and message without getting resource.

builder.setTitle(R.string.delete_profile_title);
builder.setMessage(R.string.delete_no_custom_profile);

TO

Use getString over getResourse in particular context.

builder.setTitle(context.getResources().getString(R.string.delete_profile_title));
builder.setMessage(context.getResources().getString(R.string.delete_no_custom_profile));

Do this in setNegativeButton, setPositiveButton and setMessage for AlertDialog too.

Upvotes: 0

Hiren Patel
Hiren Patel

Reputation: 52790

Change below lines:

From:

builder.setTitle(R.string.delete_profile_title);
builder.setMessage(R.string.delete_no_custom_profile);

To:

builder.setTitle(getResources().getString(R.string.delete_profile_title));
builder.setMessage(getResources().getString(R.string.delete_no_custom_profile));

Edit 1:

Make sure that you are not having any null String[] names.

Hope this will help you.

Upvotes: 1

Md. Sajedul Karim
Md. Sajedul Karim

Reputation: 7055

use

builder.setTitle(YOUR_CONTEXT.getString(R.string.delete_profile_title));
builder.setMessage(YOUR_CONTEXT.getString(R.string.delete_no_custom_profile));

Upvotes: 1

Related Questions