在这里处理我的第一个Android应用。我搜索并尝试了我能想到的一切,但没有运气......
作为我的应用程序的一部分,我正在尝试合并一个单独的文件选择器项目。我试图将选择器分开,以便它可以被许多未来的项目共享。它本身就很好。问题是,当我尝试从我的主应用程序启动它时,我得到Resources.NotFoundException
。我遇到了Class Not Found的问题,我认为通过将选择器包含在Java Build Path中并将其包含在主应用程序的Android Manifest中,我已经理顺了这个问题。
主要应用清单:
<application ...
<activity android:name=".MyMainApp" ...
<activity android:name=".MyOtherActivity" ...
<activity android:name="com.didjit.filechooser.FileChooser"/>
</application
文件选择器在主代码中启动:
Intent intent = new Intent(this, com.didjit.filechooser.FileChooser.class);
startActivityForResult(intent, REQ_CODE_CHOOSE_SOURCE);
在Chooser方面,未找到的资源是R.layout.main
:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
browseToRoot();
findViewById(R.id.btnDone).setOnClickListener(this);
}
它抛出的错误是:
: FATAL EXCEPTION: main
: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.didjit.MyMainApp/com.didjit.filechooser.FileChooser}: android.content.res.Resources$NotFoundException: Resource ID #0x7f030001
...
12-27 18:07:00.296: E/AndroidRuntime(1961): Caused by: android.content.res.Resources$NotFoundException: Resource ID #0x7f030001
我怀疑的一件事是com.didjit.MyMainApp/com.didjit.filechooser.FileChooser
,好像它将外部项目视为子组件。
另外,我担心在解决这个问题时我会搞乱项目配置。最初,没有找到选择器类。似乎在Java Build Path / Projects
下列出它是不够的;我还必须在Java Build Path / Libraries
下包含类文件夹。如果我将选择器项目作为库,我也会遇到同样的麻烦。
那么......为什么现在可以找到项目的课程而不是资源?任何帮助将非常感激。谢谢!
P.S。这是在Eclipse中,针对API 10进行编码。
答案 0 :(得分:1)
尝试替换
Intent intent = new Intent(this, com.didjit.filechooser.FileChooser.class);
与
Intent intent = new Intent("com.didjit.filechooser.FileChooser");
您目前正在这样做的方式是告诉您活动在当前项目中的意图。这就是它没有找到外部资源的原因。我建议的方式是打开外部应用程序的标准方法。
答案 1 :(得分:0)
这些都不适合我。我找到了解决这个问题的另一种方法。
您可以使用:
Intent i = new Intent("Whatever");
i.setComponent(new ComponentName("com.didjit.filechooser","com.didjit.filechooser.FileChooser"));
startActivity(i);
其中“com.didjit.filechooser”是您的包名称,“com.didjit.filechooser.FileChooser”是您要启动的Activity的名称。