2017-07-26 71 views
0

大家好,我的問題是,當我選擇一個項目我AlertDialog解僱如何不關閉AlertDialog的Android

alertDialog = new AlertDialog.Builder(getActivity()); 
alertDialog 
     .setSingleChoiceItems(ageArr, 1, btnSelectItem) 
     .setPositiveButton(R.string.dialog_ok, btnPositiveAgeDialog) 
     .setNegativeButton(R.string.dialog_cancel, null) 
     .show(); 

我的對話框中,點擊正面看上去是什麼。

private DialogInterface.OnClickListener btnSelectItem = new DialogInterface.OnClickListener() { 
    @Override 
    public void onClick(DialogInterface dialog, int which) { 
     selectedIndexAge = which; 
    } 
}; 

我嘗試設置監聽器爲null,不會關閉,但仍然 我需要它,因爲我想知道哪些項目被選中

+0

@Ibrahim這是完全不同的.. – Beginner

+0

你是說,當你選擇你的'ageArr'單選擇列表中的項目之一,該對話框會自動關閉?我檢查了'android.app.AlertDialog.Builder'和支持庫版本的文檔,並且它們都包含像這樣的語句:「點擊一個項目時,該對話框不會被解除,只有點擊一個按鈕纔會被解除「 –

+0

@ BenP。是的先生。無論何時我在警告對話框中選擇一個項目,它都會關閉 我的意思不只是當我單擊確定或取消也當我單擊或選擇項目 – Beginner

回答

0

只要把

itemView.setOnClickListener(null); 

您可以使用hasOnClickListeners()的實現來了解從android.view.View類中獲取的偵聽器的狀態爲

public boolean hasOnClickListeners() { 
     ListenerInfo li = mListenerInfo; 
     return (li == null && li.mOnClickListener == null); 
    } 

使用下面的鏈接進行進一步的修改

Set listener instance in fragment on application restore

0

試試這個

dialog.getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener(new View.OnClickListener() 
    {    
     @Override 
     public void onClick(View v) 
     { 
      Boolean wantToCloseDialog = false; 
      //Do stuff, possibly set wantToCloseDialog to true then... 
      if(wantToCloseDialog) 
       dialog.dismiss(); 
      //else dialog stays open. Make sure you have an obvious way to close the dialog especially if you set cancellable to false. 
     } 
    }); 
0

別的東西必須關閉您的AlertDialog。下面是一個程序,我相信會重複您發佈的最低要求,並選擇其中一個項目不會關閉對話框。

public class MainActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     String[] values = new String[]{ "one", "two", "three", "four" }; 

     DialogInterface.OnClickListener choiceListener = new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialog, int which) { 
       Toast.makeText(MainActivity.this, "selected index: " + which, Toast.LENGTH_SHORT).show(); 
      } 
     }; 

     DialogInterface.OnClickListener positiveListener = new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialog, int which) { 
       Toast.makeText(MainActivity.this, "positive button", Toast.LENGTH_SHORT).show(); 
      } 
     }; 

     new AlertDialog.Builder(this) 
       .setSingleChoiceItems(values, 1, choiceListener) 
       .setPositiveButton("ok", positiveListener) 
       .setNegativeButton("cancel", null) 
       .show(); 
    } 
}