gpt4 book ai didi

java - AlertDialog MultiChoice 没有给我正确的选择

转载 作者:行者123 更新时间:2023-12-02 07:41:58 25 4
gpt4 key购买 nike

我正在尝试使用动态数据构建多选 AlertDialog。

好吧,一切都加载得很好等等,但是选择很困惑。

这是我的代码:

new AlertDialog.Builder(this)
.setTitle("Cities")
.setMultiChoiceItems(_options, _selections, new DialogInterface.OnMultiChoiceClickListener(){

@Override
public void onClick(DialogInterface dialog, int clicked, boolean selected) {
Log.i("Database", _options[clicked] + " selected: " + selected);
}

})
.setPositiveButton("OK", new DialogInterface.OnClickListener(){

@Override
public void onClick(DialogInterface dialog, int clicked) {
switch(clicked) {
case DialogInterface.BUTTON_POSITIVE:
for( int i = 0; i < _options.length; i++ ){
Log.i("Database", "id: " + _values[i] + " " + _options[i] + " selected: " + _selections[i]);
}
break;
}
}
})
.create();

正如您在 LogCat 中看到的,我描述了我的问题:

** OPENED ALERTDIALOG VIA A BUTTON AND SELECTED THE FOLLOWING: **
07-12 16:06:51.347: I/Database(8034): Aveiro selected: true
07-12 16:06:53.936: I/Database(8034): Coimbra selected: true
07-12 16:07:00.116: I/Database(8034): Porto selected: true

** AFTER PRESSING THE OK BUTTON, THIS SHOWS UP, WHICH IS CORRECT: **
07-12 16:07:02.826: I/Database(8034): id: 1 Aveiro selected: true
07-12 16:07:02.826: I/Database(8034): id: 2 Coimbra selected: true
07-12 16:07:02.826: I/Database(8034): id: 3 Porto selected: true
07-12 16:07:02.826: I/Database(8034): id: 4 Minho selected: false

** I CLICKED THE BUTTON TO START THE DIALOG AGAIN DE UNSELECTED THE FOLLOWING: **
07-12 16:07:07.087: I/Database(8034): Coimbra selected: false

** AFTER PRESSING THE OK BUTTON, ALL SHOWS AS FALSE. 1 AND 3 SHOULD BE TRUE: **
07-12 16:07:08.097: I/Database(8034): id: 1 Aveiro selected: false
07-12 16:07:08.097: I/Database(8034): id: 2 Coimbra selected: false
07-12 16:07:08.097: I/Database(8034): id: 3 Porto selected: false
07-12 16:07:08.097: I/Database(8034): id: 4 Minho selected: false

最佳答案

编辑

尝试了你的代码,它对我来说工作得很好。逐步执行并确保您的值是正确的。

这是我的测试应用程序。唯一的区别是我不知道 _values 是什么,所以我把它拿出来了。

public class SandBoxActivity extends Activity {

private Button testButton;

private CharSequence[] _options = {"Aveiro", "Coimbra", "Porto", "Minho"};

private boolean[] _selections = {true, true, true, false};

private AlertDialog test;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

test = new AlertDialog.Builder(this)
.setTitle("Cities")
.setMultiChoiceItems(_options, _selections, new DialogInterface.OnMultiChoiceClickListener(){

@Override
public void onClick(DialogInterface dialog, int clicked, boolean selected) {
Log.i("Database", _options[clicked] + " selected: " + selected);
}

})
.setPositiveButton("OK", new DialogInterface.OnClickListener(){

@Override
public void onClick(DialogInterface dialog, int clicked) {
switch(clicked) {
case DialogInterface.BUTTON_POSITIVE:
for( int i = 0; i < _options.length; i++ ){
Log.i("Database", "id: " + " " + _options[i] + " selected: " + _selections[i]);
}
break;
}
}
})
.create();

this.testButton = (Button) findViewById(R.id.color_button);
this.testButton.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
test.show();
}
});
}
}
<小时/>

旧帖子

.setMultiChoiceItems(_options, _selections, new DialogInterface.OnMultiChoiceClickListener(){

@Override
public void onClick(DialogInterface dialog, int clicked, boolean selected) {
Log.i("Database", _options[clicked] + " selected: " + selected);
}

})

我没有看到您实际上正在处理它被单击的事实。我看到您正在打印到它被单击的日志,但您没有更改它在 _selections 数组中被选中的事实。这可能是你的问题。

试试这个:

.setMultiChoiceItems(_options, _selections, new DialogInterface.OnMultiChoiceClickListener(){

@Override
public void onClick(DialogInterface dialog, int clicked, boolean selected) {
_selections[clicked] = selected;
Log.i("Database", _options[clicked] + " selected: " + selected);
}

})

关于java - AlertDialog MultiChoice 没有给我正确的选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11454945/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com