3

Я создал список внутри Фрагмент с использованием адаптера. Я хочу отобразить другое диалоговое окно для каждого из элементов в списке при нажатии. Я добавил слушателя к элементам списка и написал код для появления диалогового окна для одного из элементов (второго). Однако, когда я нажимаю этот элемент, экран телефона тускнеет, но диалог не отображается. Я добавил соответствующий код ниже. Я много искал об этой проблеме в Интернете и сам пробовал много разных вещей, но ничего не работает. Все остальное в приложении работает нормально.Экран тускнеет, но диалог не отображается

Любая помощь будет действительно оценена. Спасибо заранее!

DialogFragment Класс:

public class GenreDialogFragment extends DialogFragment{ 
@Override 
public Dialog onCreateDialog(Bundle savedInstanceState) { 
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 
    AlertDialog dialog = builder.create(); 
    builder.setTitle(R.string.title_genre_dialog); 
    builder.setMessage("Are you sure?"); 
    builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      // on success 
     } 
    }); 
    builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      dialog.dismiss(); 
     } 
    }); 

    return dialog; 
} 
} 

Родитель Фрагмент Класс, в котором я хочу, чтобы появиться диалоговое окно:

public class FragmentAddWatchedMovie extends ListFragment{ 
@Override 
public void onViewCreated(View view, Bundle savedInstanceState) { 
    super.onViewCreated(view, savedInstanceState); 
    SetListAdapter(); 
    SetClickListener(); 

} 
private void SetClickListener() { 
    ListView listView = (ListView) getView().findViewById(android.R.id.list); 

    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
      switch (position){ 
       case 0:{ 
        FragmentManager manager = getFragmentManager(); 
        GenreDialogFragment fragment = new GenreDialogFragment(); 
        fragment.setTargetFragment(FragmentAddWatchedMovie.this,0); 
        fragment.show(manager, "GenreDialog_Fragment"); 
        break; 

       } 
       case 1:{ 

       } 
       case 2:{ 

       } 
       case 3:{ 

       } 
       case 4:{ 

       } 
       case 5:{ 

       } 
      } 

     } 
    }); 

} 
+0

Try двигаться «AlertDialog диалог = builder.create();» прямо над обратной линией пожалуйста. – Cata

+0

Это сработало! Огромное спасибо :) –

ответ

2

Переместить следующую строку: «AlertDialog dialog = builder.create();» прямо над обратной линии в Dialog классе ,

Это не работает для вас, потому что вы создали диалог перед установкой предпочтений на застройщика :)