2011-12-27 40 views
2

在这里工作我的第一个Android应用程序。我搜索并尝试了所有我能想到的,但没有运气...启动外部活动的无尽问题 - 资源未找到

作为我的应用程序的一部分,我试图合并一个单独的文件选择器项目。我试图让选择器保持独立,以便它可以被许多未来的项目共享。它本身就是正确的。问题是,当我尝试从我的主应用程序启动它时,我得到一个Resources.NotFoundException。我遇到了类未找到的问题,我认为我已经通过将选择器包含在Java构建路径中并包含在主应用程序的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); 

对事物的选配方面,这不是被人发现的资源是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

回答

1

尝试用

Intent intent = new Intent("com.didjit.filechooser.FileChooser"); 

更换

Intent intent = new Intent(this, com.didjit.filechooser.FileChooser.class); 

他们的方式,你正在做的就是告诉意图,该活动是当前项目中。这就是为什么它没有找到外部资源。我建议的方式是打开外部应用程序的标准方式。

+0

谢谢,@AlexPaino,这本质上是它!我用动作'com.didjit.filchooser.intent.action.SELECT_ACTION'创建了一个新的intent。然后将其作为公共字符串(名为SELECT_ACTION)添加到FileChooser类中。最后,调用类使用'新的Intent(FileChooser.SELECT_ACTION)'。感谢您将我拉直! – Didjit 2011-12-28 03:36:53

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”是要启动活动的名称。