2015-08-20 45 views
0

在我的Android應用程序中,我創建了一個具有自定義View的自定義DialogFragment,但我想要帶有透明背景的Positive和Negative Button。NullPointerException嘗試獲取DialogFragment的PositiveButton

所以我看到一些SO答案,我做了這樣的事情:

private class PersonalInfoDialogFragment extends DialogFragment { 

    @Override 
    public void onStart(){ 
     super.onStart(); 
     Button pButton = ((AlertDialog) getDialog()).getButton(DialogInterface.BUTTON_POSITIVE); 
     Button nButton = ((AlertDialog) getDialog()).getButton(DialogInterface.BUTTON_NEGATIVE); 

     pButton.setBackgroundColor(getResources().getColor(Color.TRANSPARENT)); 
     nButton.setBackgroundColor(getResources().getColor(Color.TRANSPARENT)); 
    } 

    @Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) { 
     LayoutInflater inflater = getActivity().getLayoutInflater(); 
     final View view=inflater.inflate(R.layout.personalinformation_dialog, null); 
     AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 
     builder.setTitle(R.string.personalinformation) 
       .setView(view) 
       .setPositiveButton(R.string.edit, new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int id) { 
          //Some code 
        } 
       }) 
       .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int id) { 
         // User cancelled the dialog 
        } 
       }); 
     // Create the AlertDialog object and return it 
     final AlertDialog dialog = builder.create(); 
     //I also tried this: dialog.getButton(DialogInterface.BUTTON_POSITIVE).setBackgroundColor(Color.TRANSPARENT); 
     return dialog; 
    } 
} 

爲什麼我面對的NullPointerException我不明白。任何想法?

+0

嘗試做pButton,n按鈕全球和在onStart替換代碼onCreateDialog –

+0

和更改您的代碼dialog.getButton(AlertDialog.BUTTON_POSITIVE).doWhatEverYouWant –

回答

1
public Button pButton ,nButton ; 

    @Override 
     public void onStart(){ 
      super.onStart(); 

     } 

     @Override 
     public Dialog onCreateDialog(Bundle savedInstanceState) { 

      LayoutInflater inflater = getActivity().getLayoutInflater(); 
      final View view=inflater.inflate(R.layout.personalinformation_dialog, null); 
      pButton = ((AlertDialog) getDialog()).getButton(DialogInterface.BUTTON_POSITIVE); 
      nButton = ((AlertDialog) getDialog()).getButton(DialogInterface.BUTTON_NEGATIVE); 

      pButton.setBackgroundColor(getResources().getColor(Color.TRANSPARENT)); 
      nButton.setBackgroundColor(getResources().getColor(Color.TRANSPARENT)); 
      AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 
      builder.setTitle(R.string.personalinformation) 
        .setView(view) 
        .setPositiveButton(R.string.edit, new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, int id) { 
           //Some code 
         } 
        }) 
        .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, int id) { 
          // User cancelled the dialog 
         } 
        }); 
      // Create the AlertDialog object and return it 
      final AlertDialog dialog = builder.create(); 
      //I also tried this: dialog.getButton(DialogInterface.BUTTON_POSITIVE).setBackgroundColor(Color.TRANSPARENT); 
      return dialog; 
     } 
    } 
+0

我仍然得到NullPointerException異常。 – Kritias

相關問題