启动一个Intent,其中Class Name是一个变量?

时间:2011-06-18 00:38:30

标签: android database android-intent

我正在尝试从表示意图名称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);
            }
        });

2 个答案:

答案 0 :(得分:2)

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

如果您想将String转换为Class,我认为您可以使用Class.forName方法执行此操作。

答案 1 :(得分:1)

无论您使用的是硬编码的Queryclass名称还是nIntent,Intent调用都应该相同。

而不是使用'this'而是在意图调用中使用[Class] .this。

对于来自db的动态类,只返回字符串中的classname,而不是整个意图名称作为字符串,因为在创建Intent时需要传递上下文。你还面临着问题......还原问题。干杯!