启动外部活动的无休止问题 - 未找到资源

时间:2011-12-27 23:56:57

标签: java android resources

在这里处理我的第一个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进行编码。

2 个答案:

答案 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的名称。