Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在类名是变量的情况下启动一个Intent?_Android_Database_Android Intent - Fatal编程技术网

Android 在类名是变量的情况下启动一个Intent?

Android 在类名是变量的情况下启动一个Intent?,android,database,android-intent,Android,Database,Android Intent,我试图从表示意图名称的字符串变量中访问意图,nIntent 问题:如果我用QueryDisplay.class名称替换变量nIntent,它会正确触发,但是如果我使用变量,为什么我会得到典型的No-Activity来处理Intent{act=QueryDisplay.class(有附加项)} 我不明白,因为它工作良好硬编码(它在清单中)。有什么想法吗 谢谢你的帮助 lv.setOnItemClickListener(new OnItemClickListener() {

我试图从表示意图名称的字符串变量中访问意图,
nIntent

问题:如果我用
QueryDisplay.class
名称替换变量
nIntent
,它会正确触发,但是如果我使用变量,为什么我会得到典型的
No-Activity来处理Intent{act=QueryDisplay.class(有附加项)}

我不明白,因为它工作良好硬编码(它在清单中)。有什么想法吗

谢谢你的帮助

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(新的OnItemClickListener(){
@凌驾
公共链接(AdapterView arg0,视图v,内部arg2,
长arg3){
字符串url=“”;
url=(字符串)v.getTag();
int nI=c.getColumnIndexOrThrow(“意图”);
stringnintent=c.getString(nI);
int tvTitle=c.getColumnIndexOrThrow(“标题”);
String title=c.getString(tvTitle);
int tvlab=c.getColumnIndexOrThrow(“标签”);
字符串标签=c.getString(tvLabel);
String queryKey=“按”\u id`ASC“从“+label+”订单中选择*”;

//Intent i=new Intent(nIntent);问题在于
nIntent
是一个字符串,而不是
对象。如果查看,您会发现唯一接受单个字符串的构造函数要求该字符串表示一个操作,而不是一个类


如果您想将字符串转换为类,我认为您可以使用该方法。无论您使用的是硬编码Queryclass名称还是nIntent,在这两种情况下,Intent调用都应该相同

不要使用“this”,而要使用[Class]。这是一个意图调用


对于db中的动态类,只需在字符串中返回classname,而不是作为字符串返回整个意图名称,因为创建意图时需要传递上下文。但您仍然面临问题…返回问题。干杯!

Thnx!这是需要知道的。Thnx,我最初使用的是[class].这个.就这最后一次我没有,只是想听听你的建议。
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);
            }
        });