我在这里面临挑战。我创建了一个列表(在 listView 中),当我选择一个项目(这个列表的)时,它返回一个字符串。我需要用这个字符串打开一个新屏幕。
让我试着解释一下:这个列表包含以下内容(这里只显示了一小部分):
"ACTION_SETTINGS", "ACTION_SHOW_REGULATORY_INFO", "ACTION_SOUND_SETTINGS", "ACTION_STORAGE_VOLUME_ACCESS_SETTINGS", "ACTION_APPLICATION_DETAILS_SETTINGS",
"ACTION_SYNC_SETTINGS", "ACTION_USAGE_ACCESS_SETTINGS", "ACTION_USER_DICTIONARY_SETTINGS" blablabla...
实际上像上面的选项有一百多个选项。这些选项是特定的配置选项。因此,当我单击其中一个选项时,它应该会打开“特定配置屏幕”。
如果我这样做它会起作用,但我想要的是从列表中选择而不是这样:
Intent intent = new Intent(android.provider.Settings.ACTION_SOUND_SETTINGS);
startActivity(intent);
//以上是执行此操作的“静态”方式(但有效)
我想要的是一种“动态”的方式来做到这一点。
类似于:
String novaTela = "android.provider.Settings." + listaConf.getItemAtPosition( i ).toString();
// above listaConf is my ListView
Intent intent = new Intent(novaTela);
我已经尝试过解析但没有成功。像这样:
Intent intent = Intent.parseIntent(sIntent); // I don't know it is possible
如果我像这样使用“固定参数”:
Intent intent = new Intent(android.provider.Settings.ACTION_SOUND_SETTINGS);
startActivity(intent);
那行得通...但是如果我尝试这样的“动态”方式:
String novaTela = "android.provider.Settings." + listaConf.getItemAtPosition( i ).toString();
Intent intent = new Intent(novaTela);
我得到一个错误:
No activity Found to handle Intent
{act=android.provider.Settings.ACTION_SOUND_OPTIONS}
有人可以帮帮我吗?
最佳答案
你从这一行中得到了什么
String setting = android.provider.Settings.ACTION_SETTINGS;
是
"android.settings.SETTINGS"
直接传入Intent
即可:
Intent intent = new Intent("android.settings.SETTINGS");
startActivity(intent);
所以这应该可以解决您的问题:
String novaTela = listaConf.getItemAtPosition( i ).toString().replace("ACTION_","android.settings.");
Intent intent = new Intent(novaTela);
关于java - 需要从字符串源打开一个 Intent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58958095/