2015-06-01 2 views
0

Класс:Android Создать PromptDialog класс

public class PromptDialog extends DialogFragment{ 
    public interface IPromptDialogListener{ 
     public void onPromptDialogOk(String promptText); 
    } 

    private Context _context; 
    private IPromptDialogListener _consumer; 

    @Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) { 
     AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 
     final EditText prompt=new EditText(_context); 
     builder.setView(prompt); 
     builder.setTitle("The Title"); 
     builder.setMessage("The Message"); 

     builder.setPositiveButton("Ok", new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int whichButton) { 
       _consumer.onPromptDialogOk(prompt.getText().toString()); 
      } 
     }); 

     builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int whichButton) { 
       // Canceled. 
      } 
     }); 

     builder.show(); 
     return super.onCreateDialog(savedInstanceState); 
    } 

    public void showPrompt(IPromptDialogListener consumer,Context context,FragmentManager fragmentManager){ 
     _consumer=consumer; 
     _context=context; 
     show(fragmentManager,"prompt"); 
    } 
} 

Деятельность: общественного класса TheActivity расширяет активность реализует PromptDialog.IPromptDialogListener {

PromptDialog promptDialog; 

    public void btNuevaRuta_click(View view){ 
     if (promptDialog==null){ 
      promptDialog=new PromptDialog(); 
     } 
     promptDialog.showPrompt(this,this,getFragmentManager()); 
    } 

    @Override 
    public void onPromptDialogOk(String promptText) { 
     Toast.makeText(this,promptText,Toast.LENGTH_LONG).show(); 
    } 
} 

Результат: При открытии приглашения диалог, показать это: http://i.imgur.com/TVzZMCe.png

После предварительного сс назад кнопка: enter image description here

И, наконец, текст отображается: http://i.imgur.com/hkUIOEO.png

Что происходит, когда диалог открыт?

+0

Никто не знает, кто не прав? –

ответ

0

Я нашел ошибку. Последние строки класса PromptDialog открыты два диалога ...

Вы просто должны вернуть диалог, созданный и самообразующийся удаляемого

Линии:

builder.show(); 
    return super.onCreateDialog(savedInstanceState); 

Заменено:

return builder.show(); 
    //return super.onCreateDialog(savedInstanceState); 
Смежные вопросы