Kritias
Kritias

Reputation: 187

NullPointerException trying to get PositiveButton of DialogFragment

In my Android application I created a custom DialogFragment with a custom View but I want the Positive and Negative Button with transparent background.

So I saw some SO answers and i did something like this:

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

I don't get why I am facing NullPointerException. Any idea?

Upvotes: 0

Views: 102

Answers (1)

IntelliJ Amiya
IntelliJ Amiya

Reputation: 75798

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

Upvotes: 1

Related Questions