java - 需要从字符串源打开意图
问题描述
我在这里面临挑战。我创建了一个列表(在 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);
我收到一个错误:
未找到处理 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);
推荐阅读
- real-time - 有没有办法拆分 Apache Storm 元组并将它们合并回来?
- android - Android/Java:当 RecyclerView 可见性从 GONE 变为 VISIBLE 时如何禁用自动滚动
- spring - Spring:每个关系都带有关系表的奇怪单对映射
- python - 这段代码可以缩短吗?带有表情符号的自定义时间状态
- internationalization - 如何使用 FormatJS CLI 保留翻译顺序?
- amazon-web-services - Kinesis Firehose 与 Elastic Search
- javascript - 从数组中查找项目 Adobe CEP
- javascript - 在满足选择的条件后,显示或隐藏进一步的选择
- authentication - 有没有办法在 bitbucket-pipelines.xml 中指定 .pem 键?
- google-apps-script - 根据标题行中的日期自动保护列