java - 带有 DialogInterface 的嵌套开关
问题描述
我正在制作一个有多种选择的叙事游戏,所以我必须使用嵌套开关。
我正在使用一个带有单一选择的 dialogInterface,我想做这样的事情:
switch(i){
case 0: response1;
switch(i){
case 0: response 2
switch(i){
case 0: response 3
}
}
}
但问题是切换键(i),我不知道在第一次切换后如何更改它:/
这是我的代码:
listChoices = new String[]{"Answer1,answer2,answer3"};
Button btn = (Button) findViewById(R.id.btnChoice);
btn.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// Text to choose
AlertDialog.Builder mBuilder= new AlertDialog.Builder(ChapTest.this);
mBuilder.setTitle("Your choice:");
mBuilder.setSingleChoiceItems(listChoices, -1, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface,int i) {
//fonction list text
userInput.setText(listChoices[i]);
// Fonction message
ResponseMessage message = new ResponseMessage(userInput.getText().toString(), 1);
responseMessageList.add(message);
switch (i) {
case 0:
ResponseMessage message2 = new ResponseMessage("Désolé " + prenom + ", tu tiens le coup?", 2);
responseMessageList.add(message2);
listChoices = new String[]{"answer4,answer5,answer6 "};
switch (i) {
case 0:
ResponseMessage message6 = new ResponseMessage("Test", 2);
responseMessageList.add(message6);
break;
}
break;
解决方案
在您的代码中,您永远不会在第二个“list Choices = new ...”之后重新分配“i”变量,因此在那里执行“switch(i)”绝对没用,因为您处于前面的“case 0:... ” 的“i”,因此该变量在所有情况下都保持不变。
如果您知道嵌套事物的“堆栈”有多深,则可以使用除“i”以外的其他变量名称,例如“j”、“k”等...
listChoices = new....
mBuilder.setSingleChoiceItems(listChoices, -1, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
...use "i"...
list Choices = new...
mBuilder.setSingleChoiceItems(listChoices, -1, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int j) {
...use "j"...
}
}
推荐阅读
- r - 我有两组外观相同的数据,一组提到“级别”,另一组没有。如何更改它以使两者都具有“级别”?
- flutter - 如何访问使用 MultiProvider 创建的模型中的流?
- php - (WordPress)尝试在我的 CPT 插件脚本中实现 jquery
- ios - 我是否需要苹果 MFI 程序才能通过 USB 电缆访问 IOS 设备的短信?
- c++ - 如何修复 Eigen::NaturalOrdering
>::MatrixType' 没有名为 'isCompressed' 的成员 - ios - iOS 13 beta 中未加载自定义字体
- c - 空闲字符内存
- reactjs - 为 Spring Boot 制作黑名单 JWT 令牌
- php - 如何在 codeigniter HMVC 中使用子模块?
- reactjs - 遇到错误'动作必须是普通对象。使用自定义中间件进行异步操作'