2016-05-11 2 views
0

Привет, я продолжаю получать это исключение. Ниже мой код. Пожалуйста, помогите мне решить эту проблему:AlertDialog singleChoiceItem NullPointerException

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

Вход:

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) 
+0

Так что нулевая? – ianhanniballake

+0

Опубликовать трассировку стека –

+0

@ianhanniballake Пожалуйста, обратите внимание на журналы – rup35h

ответ

1

Изменение ниже строки:

От:

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:

Убедитесь, что вы не имея каких-либо nullString[] names.

Надеюсь, это вам поможет.

+1

все еще не работает. – rup35h

+0

@ rup35h, Отредактированный ответ, пожалуйста, свяжитесь с Редактором 1. –

+0

Я нашел проблему Спасибо – rup35h

0

Изменить Это:

Вы пытаетесь установить заголовок и сообщение без получения ресурса.

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

К

Использование getString над getResourse в частности context.

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

ли это в setNegativeButton, setPositiveButton и setMessage для AlertDialog тоже.

+1

@HirenPatel не спешит Я редактирую свой ответ, и если вы видите, я добавил описание и контекстный объект тоже. – Amy

+0

AlertDialog.Builder builder = new AlertDialog.Builder (this); это среднее использование использовало активность, и в действии не нужно добавлять контекст –

+1

@HirenPatel попытается прочитать весь код bro. Автор допустил ошибки в строке ниже. Я также подчеркнул это. – Amy

1

использование

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

 Смежные вопросы

  • Нет связанных вопросов^_^