我正在尝试从表示意图名称nIntent
的字符串变量中访问意图。
问题:如果我用nIntent
名称替换变量QueryDisplay.class
,它会正确触发,但如果我使用变量,为什么我会得到典型的{{ 1}}?
我没有得到它,因为它工作得很好硬编码(它在清单中)。有什么想法吗?
感谢您的帮助。
No Activity found to handle Intent { act=QueryDisplay.class (has extras) }
更新:这是正确的代码:
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);
}
});
答案 0 :(得分:2)
问题是nIntent
是一个字符串,而不是Class
个对象。如果查看Intent documentation,您将看到唯一接受单个String的构造函数要求字符串表示操作,而不是类。
如果您想将String转换为Class,我认为您可以使用Class.forName方法执行此操作。
答案 1 :(得分:1)
无论您使用的是硬编码的Queryclass名称还是nIntent,Intent调用都应该相同。
而不是使用'this'而是在意图调用中使用[Class] .this。
对于来自db的动态类,只返回字符串中的classname,而不是整个意图名称作为字符串,因为在创建Intent时需要传递上下文。你还面临着问题......还原问题。干杯!