gpt4 book ai didi

android - 在类名是变量的地方启动一个 Intent?

转载 作者:搜寻专家 更新时间:2023-11-01 09:13:34 26 4
gpt4 key购买 nike

我正在尝试从表示 Intent 名称 nIntent 的字符串变量访问 Intent 。

问题:如果我将变量 nIntent 替换为 QueryDisplay.class 名称,它会正确触发,但如果我使用变量,为什么我得到典型的 No Activity found to handle Intent { act=QueryDisplay.class (has extras) }

我不明白,因为它经过硬编码(在 list 中)运行良好。有什么想法吗?

感谢您的帮助。

lv.setOnItemClickListener(new OnItemClickListener() {

@Override
public void onItemClick(AdapterView<?> arg0, View v, int arg2,
long arg3) {

String url = "";
url = (String) v.getTag();

int nI = c.getColumnIndexOrThrow("intent");
String nIntent = c.getString(nI);

int tvTitle = c.getColumnIndexOrThrow("title");
String title = c.getString(tvTitle);

int tvLabel = c.getColumnIndexOrThrow("label");
String label = c.getString(tvLabel);

String queryKey = "SELECT * FROM " + label + " ORDER BY `_id` ASC";

//Intent i = new Intent(nIntent);<- This doesn't?? work
Intent i = new Intent(this, QueryDisplay.class);<- This works
i.putExtra("QUERY_KEY", queryKey);
i.putExtra("url", url);
i.putExtra("TITLE", title);
i.putExtra("LABEL", label);
QueryDisplay.this.startActivity(i);
}
});

更新:这是正确的代码:

lv.setOnItemClickListener(new OnItemClickListener() {

@Override
public void onItemClick(AdapterView<?> arg0, View v, int arg2,
long arg3) {

String url = "";
url = (String) v.getTag();

int nI = c.getColumnIndexOrThrow("intent");
String intent = c.getString(nI);
Class<?> nIntent = null;
try {
nIntent = Class.forName(intent);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

int tvTitle = c.getColumnIndexOrThrow("title");
String title = c.getString(tvTitle);

int tvLabel = c.getColumnIndexOrThrow("label");
String label = c.getString(tvLabel);

String queryKey = "SELECT * FROM " + label + " ORDER BY `_id` ASC";

Intent i = new Intent(QueryDisplay.this, nIntent);
i.putExtra("QUERY_KEY", queryKey);
i.putExtra("url", url);
i.putExtra("TITLE", title);
i.putExtra("LABEL", label);
QueryDisplay.this.startActivity(i);
}
});

最佳答案

问题是 nIntent 是一个字符串,而不是一个 Class 对象。如果您查看 Intent documentation ,您会看到唯一接受单个字符串的构造函数要求该字符串代表一个 Action ,而不是一个类。

如果您想将字符串转换为类,我认为您可以使用 Class.forName 来实现方法。

关于android - 在类名是变量的地方启动一个 Intent?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6393111/

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