2016-06-30 2 views
0

Я пытаюсь вызвать диалоговое окно из фрагмента с одним списком выбора выбора, но когда я нажал на кнопку только экран не гаснет, ничего показывая вверх ...Android Show Dialog не работает только экран гаснет

Вызов функции:

private void showDialog() { 
    myDialog dialog = new myDialog(); 
    dialog.show(getActivity().getSupportFragmentManager(),"dialog"); 
} 

Dialog класс:

public class Dialog extends DialogFragment { 

    final String[] items= {"item 1","item 2","item 3"}; 
    String selection; 

    @NonNull 
    @Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) { 

     AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 
     builder.setTitle("Choose One").setSingleChoiceItems(items, -1, new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialog, int which) { 
       switch (which){ 
        case 0: 
         selection = items[which]; 
         break; 
        case 1: 
         selection = items[which]; 
         break; 
        case 2: 
         selection = items[which]; 
         break; 
        default: 
         break; 
       } 
      } 
     }).setPositiveButton("OK", new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialog, int which) { 
       Toast.makeText(getActivity(), "item selected: " + selection, Toast.LENGTH_SHORT).show(); 
      } 
     }); 
     return super.onCreateDialog(savedInstanceState); 
    } 
} 
+0

попробовать с dialog.setCancellable (ложной); –

+0

@LucaNicoletti, если я это делаю в своей функции вызова, я до сих пор не вижу список, и я не смог вернуться после того, как экран погаснет ...: ( – Deidara

ответ

1

В onCreateDialog вы должны вернуть Dialog, что вы создали:

public Dialog onCreateDialog(Bundle savedInstanceState) { 

    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 
    builder.setTitle("Choose One").setSingleChoiceItems(items, -1, new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      switch (which){ 
       case 0: 
        selection = items[which]; 
        break; 
       case 1: 
        selection = items[which]; 
        break; 
       case 2: 
        selection = items[which]; 
        break; 
       default: 
        break; 
      } 
     } 
    }).setPositiveButton("OK", new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      Toast.makeText(getActivity(), "item selected: " + selection, Toast.LENGTH_SHORT).show(); 
     } 
    }); 
    return builder.create(); 
} 

Переименовать класс Dialog к CustomDialog или что-то подобное, потому что он уже используется.
Вы можете показать это делает:

private void showDialog() { 
    CustomDialog dialog = new CustomDialog(); 
    dialog.show(getActivity().getSupportFragmentManager(),"dialog"); 
} 
+0

Спасибо, что он работает сейчас ...! – Deidara

1

Не возвращайте super.onCreateDialog(savedInstanceState) но builder.create()

Смежные вопросы