我有一个 DialogFragment,它创建一个列表视图对话框,在列表项上单击我想显示一个警报对话框,但是当我创建对话框时,它给了我一个NullPointerException
我以前从未见过的错误
08-05 11:40:42.315: E/AndroidRuntime(4693): java.lang.NullPointerException
08-05 11:40:42.315: E/AndroidRuntime(4693): at android.app.AlertDialog.resolveDialogTheme(AlertDialog.java:142)
08-05 11:40:42.315: E/AndroidRuntime(4693): at android.app.AlertDialog$Builder.<init>(AlertDialog.java:359)
08-05 11:40:42.315: E/AndroidRuntime(4693): at com.tyczj.bowling.dialogs.SeasonType$1$1.onClick(SeasonType.java:60)
08-05 11:40:42.315: E/AndroidRuntime(4693): at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:166)
08-05 11:40:42.315: E/AndroidRuntime(4693): at android.os.Handler.dispatchMessage(Handler.java:99)
08-05 11:40:42.315: E/AndroidRuntime(4693): at android.os.Looper.loop(Looper.java:137)
08-05 11:40:42.315: E/AndroidRuntime(4693): at android.app.ActivityThread.main(ActivityThread.java:4745)
08-05 11:40:42.315: E/AndroidRuntime(4693): at java.lang.reflect.Method.invokeNative(Native Method)
08-05 11:40:42.315: E/AndroidRuntime(4693): at java.lang.reflect.Method.invoke(Method.java:511)
08-05 11:40:42.315: E/AndroidRuntime(4693): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
08-05 11:40:42.315: E/AndroidRuntime(4693): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
08-05 11:40:42.315: E/AndroidRuntime(4693): at dalvik.system.NativeStart.main(Native Method)
这是我的对话框onCreate
@Override
public Dialog onCreateDialog(Bundle state){
final Dialog d = new Dialog(getActivity());
d.setContentView(R.layout.dialog_layout);
d.setTitle("Select a season");
ListView lv = (ListView)d.findViewById(R.id.dialog_list);
String[] list = getResources().getStringArray(R.array.season_dialog_type);
lv.setAdapter(new ArrayAdapter<String>(getActivity(),R.layout.stats_list_layout,list));
lv.setOnItemClickListener(new OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) {
d.dismiss();
FragmentTransaction ft = getFragmentManager().beginTransaction();
if(arg2 == 0){
DialogFragment df = new SeasonsDialog(true);
df.show(ft,null);
}else if(arg2 == 1){
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
final View v = getActivity().getLayoutInflater().inflate(R.layout.add_season_layout, null, false);
builder.setTitle("Add a season").setView(v).setPositiveButton("Add", new OnClickListener(){
@Override
public void onClick(DialogInterface arg0, int arg1) {
arg0.dismiss();
AlertDialog.Builder builder2 = new AlertDialog.Builder(getActivity()); //Error here
builder2.setTitle("Warning!").setMessage("Adding a new season will cause all new games to be under this season.\n\n Do you wish to continue?")
.setPositiveButton("Yes", new OnClickListener(){
@Override
public void onClick(DialogInterface dialog,int which) {
dialog.dismiss();
EditText et = (EditText)v.findViewById(R.id.editText1);
ContentValues values = new ContentValues();
values.put(Games.SEASON, et.getText().toString());
Uri uri = getActivity().getContentResolver().insert(Games.SEASONS_URI, values);
et.setText("");
SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(getActivity());
SharedPreferences.Editor edit = pref.edit();
edit.putLong(Preferences.SELECTED_SEASON, ContentUris.parseId(uri)).commit();
}
}).setNegativeButton("No", new OnClickListener(){
@Override
public void onClick(DialogInterface dialog,int which) {
dialog.dismiss();
}
}).create().show();
}
}).setNegativeButton("Cancel", new OnClickListener(){
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
}).create().show();
}
}
});
return d;
}
它的错误出现在我的这一行onClick
AlertDialog.Builder builder2 = new AlertDialog.Builder(getActivity());
这个错误是什么意思?