Java 在Android中调用作为变量的意图
我目前有一个列表视图,我正在尝试将列表视图指向不同的活动。因此,如果您单击1-4中的一个项,您将得到对应于该项的类。我能想到的唯一方法是在列表视图中抓取项目的文本并启动该名称的活动。它的代码如下所示:Java 在Android中调用作为变量的意图,java,android,android-listview,android-intent,android-activity,Java,Android,Android Listview,Android Intent,Android Activity,我目前有一个列表视图,我正在尝试将列表视图指向不同的活动。因此,如果您单击1-4中的一个项,您将得到对应于该项的类。我能想到的唯一方法是在列表视图中抓取项目的文本并启动该名称的活动。它的代码如下所示: final String chosen = ""; chosen = (String) ((TextView) view).getText(); Intent nextScreen = new Intent(getApplicationContext(), chosen.class); 这是行不
final String chosen = "";
chosen = (String) ((TextView) view).getText();
Intent nextScreen = new Intent(getApplicationContext(), chosen.class);
这是行不通的。我在最后一行得到一个错误,说selected不能解析为一个类型
我知道((TextView)view.getText()
之所以有效,是因为
Log.d("Debug", "Test"+((TextView) view).getText());
在logcat中为我提供正确选择的项目
有什么想法/建议吗?提前谢谢
编辑:
我尝试将代码更改为:
String chosen = (String) ((TextView) view).getText();
try {
Intent nextScreen = new Intent(getApplicationContext(), Class.forName(chosen));
startActivity(nextScreen);
Log.d("Debug", "Good"+((TextView) view).getText());
}
catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
Log.d("Debug", "Bad"+((TextView) view).getText());
}
Log.d("Debug", "Final"+((TextView) view).getText());
Log cat给了我一个
BadItem1
FinalItem1
正如有人指出的那样,我想我走错了方向。我还认为我应该使用监听器
。我将尝试并发布我的结果,以便于将来提供帮助。错误如下:
final String chosen = "";
chosen = (String) ((TextView) view).getText();
由于您将选定项声明为最终项,因此只能为其赋值一次:
final String chosen = (String) ((TextView) view).getText();
此外,我假设您希望启动活动,该活动的名称存储在所选变量中。无法为此编写selected.class。正确的方法是:
Class.forName(chosen);
希望这有帮助 没有采用
上下文
和字符串
的意图
构造函数。您可能可以在调用Intent
构造函数时执行类似Class.forName(selected)
的操作。对变量调用.Class会获取该变量的类,而不是变量内容的类
我认为您应该使用ListView
上的onicmclicklistener
来标识单击的项目。position
参数或调用getItemAtPosition(position)
,应该足以在listview中唯一地标识一个项目并调用相应的活动
请参阅此处的文档:制作一个文件
这样,您就不必将类名与用户正在阅读的文本绑定在一起。为您提供更大的灵活性/更好的用户体验/更易于维护的代码。帮助你的工作
参考:
就你而言:
String chosen = (String) ((TextView) view).getText();
Intent nextScreen = NavFactory.getNavIntent(this, chosen);
您是新发送的
字符串
作为假定的活动
的类
。这就是您需要的:
final String chosen = "";
chosen = ((TextView) view).getText();
Class<?> chosenActivity = Class.forName(chosen);
Intent nextScreen = new Intent(this, chosenActivity);
final String selected=“”;
selected=((TextView)视图).getText();
Class chosenActivity=Class.forName(已选择);
Intent nextScreen=新的Intent(此,选择活动);
不要使用应用程序上下文,请使用您刚开始的活动作为上下文
final String chosen = "";
chosen = ((TextView) view).getText();
Class<?> chosenActivity = Class.forName(chosen);
Intent nextScreen = new Intent(this, chosenActivity);