2016-05-22 9 views
2

Ich würde gerne wissen, wie man benutzerdefinierte Material Dialog für meine Anwendung erstellen. Genauer gesagt, ich brauche so etwas wie dieseSo erstellen Sie benutzerdefinierte Material Dialog

Material Dialog

Ich verfolge die alte Methode wie auf diese Weise zu erreichen:

final Dialog dialog = new Dialog(context); 
dialog.setContentView(R.layout.custom); 
dialog.setTitle("Sample"); 
Button dialogButton = (Button) dialog.findViewById(R.id.dialogButtonOK); 
      // if button is clicked, close the custom dialog 
      dialogButton.setOnClickListener(new OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        dialog.dismiss(); 
       } 
      }); 

Allerdings habe ich Null-Zeiger Ausnahme bekam, während die button tippen. Jedes Tutorial ist auch eine große Hilfe für mich.

Antwort

4

eine neue Klasse schreiben zu zeigen, die DialogFragment erstreckt.

public class CustomDialog extends DialogFragment { 

    @Nullable 
    @Override 
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
     View view = inflater.inflate(R.layout.layout_dialog,container,false); 
     getDialog().setTitle("Sample"); 
     Button doneBtn = (Button) mView.findViewById(R.id.done_convert); 
     doneBtn.setOnClickListener(doneAction); 
     return view; 
    } 

    View.OnClickListener doneAction = new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Toast.makeText(getActivity(),"Test",Toast.LENGTH_LONG).show(); 
     } 
    }; 

} 

Dann rufen Sie es aus Ihrer Tätigkeit

FragmentManager fm = getSupportFragmentManager(); 
CustomDialog custom = new CustomDialog(); 
custom.show(fm,""); 

Hope, wird es funktionieren.

0

ich glaube, Sie sollten Ihre eigene Klasse machen die DialogFragment diesen Code

public class YourDialog extends DialogFragment { 

@Override 
public Dialog onCreateDialog(final Bundle savedInstanceState) { 

    LayoutInflater inflater = getActivity().getLayoutInflater(); 
    final View dialogView = inflater.inflate(R.layout.custom, null); 

    Button dialogButton = (Button) dialogView.findViewById(R.id.dialogButtonOK); 
     // if button is clicked, close the custom dialog 
     dialogButton.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       dismiss(); 
      } 
     }); 

    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 
    builder.setView(dialogView); 
    return builder.create(); 
} 

und in Ihrer Tätigkeit Verwendung erstreckt sich der Dialog

YourDialog yourDialog = new YourDialog(); 
yourDialog.show(getFragmentManager(), "YOUR_DIALOG_TAG");