3

フラグメントの中にアダプタを使用してリストを作成しました。私はそれがクリックされたときに、リスト内の項目のそれぞれに対して異なるダイアログを表示したい。リスナーをリストアイテムに追加し、アイテムの1つ(2つ目)のダイアログに表示されるコードを記述しました。ただし、その項目をクリックすると電話画面が暗くなりますが、ダイアログは表示されません。以下の関連コードを追加しました。私はインターネット上でこの問題について多くのことを探し、自分自身で多くのことを試みましたが、何も動作していないようです。 アプリ内の他のすべてが正常に動作します。画面が暗くなりますが、ダイアログが表示されません

どんな種類のヘルプが本当に感謝されます。 ありがとうございます!

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; 
} 
} 

私は、ダイアログを表示したい親フラグメントクラス:右Dialogクラスの戻りライン上に「AlertDialog dialog = builder.create();」:

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

移動しよう「(AlertDialogダイアログ= builder.createを);」リターンラインの真上でお願いします。 – Cata

+0

それは働いた!どうもありがとうございます :) –

答えて

2

次の行を移動します。あなたがビルダーにプリファレンスを設定する前にダイアログを作成しましたので、あなたのために動作しませんでした

:)

関連する問題