2016-04-15 3 views
0

Nach dem Anklicken wird der Dialog nicht angezeigt, sondern verdunkelt nur den Bildschirm. Es ist komisch, aber ich weiß nicht, was passiert.Nach dem Anklicken wird der Dialog nicht angezeigt, sondern verdunkelt nur den Bildschirm

Dies ist meine Methode, die Dialog in meiner Fragmentklasse anzeigen sollte. :

public void helloType(String id, String name) { 
    AddHelloDialog dialog = AddHelloDialog.newInstance(id, name); 
    dialog.show(getChildFragmentManager(), "Add hello"); 
} 

Und das ist meine AddHelloDialog Klasse:

public class AddHelloDialog extends DialogFragment { 
    public static String HELLO_TYPE = null; 
    private static String mName; 
    private static String mId; 

    BusManager mBusManager; 

    public static AddHelloDialog newInstance(String id, String name) { 
     AddHelloDialog dialog = new AddHelloDialog(); 
     mId = id; 
     mName = name; 
     return dialog; 
    } 

    @NonNull 
    @Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) { 
     AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 
     View v = LayoutInflater.from(getActivity()).inflate(R.layout.dialog_add_hello, null, false); 
     ButterKnife.bind(this, v); 
     mBusManager = BusManager.get(); 

     if (getArguments() != null) 
      builder.setTitle(R.string.hello_dialog_title) 
       .setCancelable(true) 
       .setView(v) 
       .setNegativeButton(R.string.picture_dialog_cancel, new DialogInterface.OnClickListener() { 
        @Override 
        public void onClick(DialogInterface dialog, int which) { 
         dismiss(); 
        } 
       }); 
     return builder.create(); 
    } 

    @OnClick(R.id.hello1) 
    public void onHello1Click() { 
     HELLO_TYPE = "1"; 
     addUserToNamedList(); 
     dismiss(); 
    } 

    public void addUserToNamedList() { 
     //API connection 
    } 
} 

Warum ist das so? Hast du eine Idee?

+1

add dialog_add_hello.xml Code al also – USKMobility

+0

dialog_add_hello.xml: http://pastebin.com/SPMgZ1zX – y07k2

Antwort

0

Sie erstellen ein benutzerdefiniertes Dialogfeld, bei dem die Ansichtsgruppenreferenz während des Auffüllens des Layouts null ist.

Daher kann Ihr Layout nicht mit der übergeordneten Ansicht verknüpft werden.

in onCreateView Ihr benutzerdefiniertes Layout aufpumpen (...)

@Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     return inflater.inflate(R.layout.dialog_add_hello, container); 
    } 

und IDs der Ansicht erhalten und registrieren, klicken lister in onViewCreated (...) Methode

@Override 
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { 
     super.onViewCreated(view, savedInstanceState); 
     // for example 
     mEditText = (EditText) view.findViewById(R.id.txt_your_name); 


    } 

Ausführliches Beispiel https://github.com/codepath/android_guides/wiki/Using-DialogFragment

http://developer.android.com/reference/android/app/DialogFragment.html