2017-07-26 103 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(); 
    } 
}