2016-08-15 6 views
0

アイテムのリストを含むダイアログフラグメントがあります。デフォルトでは、項目をタッチするとダイアログが閉じます。この時点で却下を防止するにはどうすればよいですか?ここから指示されたように、私はコードのサンプルを、以下のい選択時にリストが消えるのを防ぐダイアログ

(私はプログラム的に後の段階でダイアログを閉じたい):https://developer.android.com/guide/topics/ui/dialogs.html

@Override 
public Dialog onCreateDialog(Bundle savedInstanceState) { 
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 
    builder.setTitle(R.string.pick_color) 
      .setItems(R.array.colors_array, new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int which) { 
      } 
    }); 
    return builder.create(); 
} 

私はその代わりにbuilder.setItems()builder.setSingleChoiceItemsを使用するオプションがある見ます私には、私が望む振る舞いを与えます。しかし、スタイルはありません。私はあなたがアイテムを提供し、DialogFragmentのsetItemsを使用する代わりにonClickListenerのインスタンスを提供する、ちょうどnullを提供すべきだと思う

+0

ない複製は、私はすでに私が.setSingleChoiceItemsを試してみまし述べたが、それは間違ったスタイルを提供します。 –

+0

お詫び申し上げます。明確にするためにあなたの質問とタイトルを言い直してください。何かのような "setSingleChoiceItemsを使用するときにダイアログのスタイルを設定するにはどうすればいいですか?私は重複フラグを削除します – tir38

答えて

0

(それは私が望んでいないラジオボタン、付属しています)。すなわち、

.setItems(R.array.colors_array, null); 

あなたは望む通りにダイアログを後で閉じることができます。ダイアログはこのように、作成された後ListViewにリスナーを設定し

+0

@ScottFergusonは動作しますか? – Lino

+1

うまくいけば、ダイアログは閉じませんが、アイテムのクリックに対してアクションを実行します。したがって、onClickListenerをnullに設定することは、私にとってはオプションではありません。 –

0

@Override 
public Dialog onCreateDialog(Bundle savedInstanceState) { 

    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 
    final AlertDialog dialog = builder.setTitle("My dialog") 
      .setItems(new String[]{"Do nothing...", "Dismiss!"}, null) // any listener will do! 
      .create(); 

    // add this listener after dialog creation to stop auto dismiss on selection 
    AdapterView.OnItemClickListener listener = new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
      switch(position) { 
       case 0: 
        // do nothing selected 
        break; 
       case 1: 
        // dismiss selected 
        dialog.dismiss(); 
        break; 
      } 
     } 
    }; 
    dialog.getListView().setOnItemClickListener(listener); 
    return dialog; 
} 
関連する問題