2011-12-27 39 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」是要啓動活動的名稱。