Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/189.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
Java 意图与类名一起使用时未按预期工作_Java_Android_Android Intent - Fatal编程技术网

Java 意图与类名一起使用时未按预期工作

Java 意图与类名一起使用时未按预期工作,java,android,android-intent,Java,Android,Android Intent,我有以下代码,在从ListActivity扩展而来的名为Menu的类中。 当我点击listitem时,Toast行得到了正确的执行,但之后什么也没有发生,我猜catch块中的代码得到了执行,而意图部分抛出了一些异常。你认为这个定义有什么问题吗 protected void onListItemClick(ListView l, View v, int position, long id) { super.onListItemClick(l, v, position, id); t

我有以下代码,在从ListActivity扩展而来的名为Menu的类中。 当我点击listitem时,Toast行得到了正确的执行,但之后什么也没有发生,我猜catch块中的代码得到了执行,而意图部分抛出了一些异常。你认为这个定义有什么问题吗

protected void onListItemClick(ListView l, View v, int position, long id) {
    super.onListItemClick(l, v, position, id);
    try {
        Toast.makeText(Menu.this, "Clicked!!", 5000).show();
        Class myClass = Class.forName("com.palye.first.MainActivity");
        Intent menuI = new Intent(Menu.this, myClass);
        startActivity(menuI);
    }
    catch (ClassNotFoundException e) {
        e.printStackTrace();
    }

}
有时

    Class myClass = Class.forName("com.example.first.MainActivity");
这是不够的,因为它不会加载类。我需要创建一个
myClass.newInstance()
;然后使用
myClass
,即使我没有使用创建的对象


试试看,也许它会解决你的问题。

在某个地方,我看到一些包名被排除在加载、部署之外,忘记了哪些包名。我记得一个是“安卓”,另一个是“内部”或“示例”。因为我正在切换/混合iOS/Android/JavaEE,我不确定哪里是不允许的,哪一个是不允许的


尝试将“
示例
”重命名/重构为“
我的
”包,也许它会解决问题。对于Android Market,当然不允许部署“
示例”

为什么不试试
MainActivity.class
?e、 例如,
Intent menuI=newintent(Menu.this,MainActivity.class)


您可以发布logcat输出吗?

您知道如果您拥有该活动,您可以创建一个明确的意图:

 Intent intent = new Intent(Menu.this, MainActivity.class);

那么您也不需要在同一个应用程序中发布异常堆栈跟踪.Is
com.example.first.MainActivity
?它在清单中声明了吗?@Nambari-这可能是另一部分,我仍在试图弄清楚,如何获取堆栈跟踪的内容,我甚至尝试了system.out.println,但仍然没有显示任何内容,任何帮助都是非常重要的appreciated@Henry-是的,该类在同一应用程序中,甚至在mainfest中定义为活动。。。但我想,在这个场景中,当您使用“com.example.first.MainActivity”时,它并没有引用清单文件,因为我们将它作为字符串传递给类实例,这就是我的想法,但我可能错了。您可以向我们显示logcat消息吗?`try{myClass.newInstance();}catch(异常e){System.out.println(e.getMessage());System.out.println(e.getCause().getMessage());}我尝试了这个方法,但不幸的是,它仍然没有产生任何有利的结果有时这是解决我的问题,而我根本不应该这样做。您确定已在清单中声明com.example.first.main活动吗?!如果未在xml中声明,它将抛出classNotfoundEcxeption。如果已声明并链接并导出到project,则加载它应该不会有问题这是manifest.xml中定义的活动-(跳过一些不相关的代码)“`当我试图传递MainActivity.this-eclipse标记一个错误-在范围内无法访问MainActivity类型的封闭实例我已将上面的logcat详细信息粘贴到“注释”下以供提问,由于文本限制,我无法粘贴完整的日志是的,我已经尝试过了,但没有任何运气
Intent menuI=new Intent(Menu.this、com.playe.first.MainActivity.class)
@ameyx是的,然后检查您的日志,然后在清单中声明活动或其他内容时会出现不同的错误。还有,为什么要在类前面加上包名?让IDE自动导入它,这样您就不会像您建议的那样把它搞糟。我尝试了这个-
class myClass=class.forName(“主要活动”);
但它仍然在logcat中显示相同的classnotfoundException。后来我甚至尝试导入包com.playe.first.*但仍然没有luck@ameyx你没有听我说,我根本没有说。坚持我在答案中输入的代码,更新你的导入,运行你的代码,并在LogCatYes中查看你的新堆栈跟踪。谢谢,这成功了!
Intent menuI=新意图(Menu.this、MainActivity.class);