gpt4 book ai didi

android - 将项目永久添加到现有的警报对话框?

转载 作者:行者123 更新时间:2023-11-29 18:07:41 27 4
gpt4 key购买 nike

我的目标是将一个项目永久添加到现有的 AlertDialog。

AlertDialog 的 XML 数组是:

<array name="serverchoice">
<item>@string/chicago_server</item>
<item>@string/london_server</item>
<item>@string/sanjose_server</item>
<item>@string/washington_server</item>
<item>@string/chicagoq_server</item>
<item>@string/londonq_server</item>
<item>@string/sanjoseq_server</item>
<item>@string/washingtonq_server</item>
</array>

如您所见,这是一个服务器列表,我希望用户能够添加自己的服务器,而不必使用预设服务器。

我创建了一个带有文本框和按钮的页面,以便用户可以进入服务器。当用户单击“添加服务器”按钮时,我希望将条目添加到列表中。

目前,当用户从 AlertDialog 中选择一个菜单项时,它会像这样处理:

    // Choose Server method

private void openServerDialog() {
new AlertDialog.Builder(this)
.setTitle(R.string.server_title)
.setItems(R.array.serverchoice,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialoginterface,
int i) {
setServer(i);
}
})
.show();
}

private void setServer(int i) {


if (String.valueOf(i).equals("0")){
CustomServer.setText("mcsord.visualware.com");
}
else if (String.valueOf(i).equals("1")){
CustomServer.setText("mcslhr.visualware.com");
}
else if (String.valueOf(i).equals("2")){
CustomServer.setText("mcssjc.visualware.com");
}
else if (String.valueOf(i).equals("3")){
CustomServer.setText("mcsiad.visualware.com");
}
else if (String.valueOf(i).equals("4")){
CustomServer.setText("qualitytestord.visualware.com");
}
else if (String.valueOf(i).equals("5")){
CustomServer.setText("qualitytestlhr.visualware.com");
}
else if (String.valueOf(i).equals("6")){
CustomServer.setText("qualitytestsjc.visualware.com");
}
else if (String.valueOf(i).equals("7")){
CustomServer.setText("qualitytestiad.visualware.com");
}

}

我现在只想在用户选择添加一个永久项目时获得另一个永久项目。我关于这个的最后一个问题还不够清楚。我不需要选项菜单或上下文菜单。

谢谢

编辑:

环顾四周,我发现人们说不可能动态地添加到数组列表中。

目前,我有一个选项菜单,当在 Android 手机本身上按下菜单按钮时,它会自行显示。我为此使用的代码是:

public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.settings_menu, menu);
return true;
}



public boolean onOptionsItemSelected(MenuItem item) {
// Handle item selection
switch (item.getItemId()) {
case R.id.add_server:
addNewServer();
return true;
default:
return super.onOptionsItemSelected(item);
}
}

是否可以创建另一个选项菜单并使用它来代替上面显示的 AlertDialog?或者我会遇到无法动态添加列表项的问题。

我确实可以让用户输入他们自己的 URL,但它不会保存它,他们每次都必须继续输入。

谢谢

最佳答案

我也不确定我是否理解您的问题...但我会尽力回答。首先,您可以在膨胀后向 alertDialog 添加动态的新选项。您不能做的是从扩充它们的地方向 xml 添加新行。

话虽如此,您需要在 Activity 结束时将新服务器存储在某个地方,以便稍后恢复它们。为此,您有多种选择,我将从我认为最简单的一种开始:

将服务器存储在共享首选项文件中:

保存示例

    Editor editor = getSharedPreferences("FileName", MODE_PRIVATE).edit();
editor.clear();
editor.putString("server1", "serverName1");
editor.putString("server2", "serverName2");
editor.commit();

阅读范例:

    SharedPreferences preferences = getSharedPreferences("FileName", MODE_PRIVATE);
preferences.getString("server1", "defaultValue");
preferences.getString("server2", "defaultValue");

您还可以使用数据库来存储这些值。如果您希望有一个包含数百台服务器的列表,这会更好,因为在这种情况下,先前解决方案的性能会下降。

最后,您可以将信息存储在文件中,但这需要更多代码,而且我看不出它有任何真正的好处。

如果我没有回答您的问题,请告诉我。祝你好运。

关于android - 将项目永久添加到现有的警报对话框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12532476/

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