2012-06-28 72 views
0

我有不同的套餐不同的活動,啓動活動從一個包到另一個包

假設我有兩個包 - > com.pack1 - > com.pack2

我有一個PACK1活動並想在pack2中調用另一個活動。我將如何做到這一點,使用意圖顯示

21:19:10.405: W/System.err(7578): android.content.ActivityNotFoundException: Unable to find explicit activity class have you declared this activity in your AndroidManifest.xml?

This is how my packages look

+0

發佈您的清單。XML,這是問題所在。一旦你做我(或某人)可以告訴你有很多包聲明。 – edthethird

+0

@edthethird清單文件:http://j.mp/MsDzyA –

回答

1

通常活動是私人自己的包。你不能在其他包開始的活動,除非該活動是明確的「出口」 (即:讓其他應用程序知道)添加到你的FlipAg中ain2Activity in com.pack2:

android:exported="true" 
+0

實現你的上面的代碼,之後Activity2包名更改爲'06- 28 22:18:31.749:W/System.err(8680):android.content.ActivityNotFoundException:無法找到顯式活動類{com.flipagain2/com.google.zxing.client.android.CaptureActivity};你有沒有在你的AndroidManifest.xml中聲明這個活動? ' –

+0

如果我將'FlipAgain2Activity'軟件包名稱更改爲'CaptureActivity'現有軟件包名稱,我認爲這樣可以解決這個問題,但是如何在包裝已經存在的情況下進行更改 –

+0

對不起,我很困惑。您需要「導出」您嘗試啓動的活動(即:CaptureActivity),以便FilAgain2Activity可以看到它。 –

1

請閱讀錯誤。

「你宣佈你的AndroidManifest.xml這個活動」。 pakage不會使問題對於去一個活動另一個活動。請檢查AndroidManifest.xml中AndroidManifest中活動的消息。

我認爲問題發生這個原因。

謝謝。

+0

我的Minifest.xml文件:http://j.mp/MsDzyA –

+0

從哪個活動去哪個活動... –

+0

先生,從'FlipAgain2Activity'到'CaptureActivity' –

1

您需要確保您聲明您的活動AndroidManifest.xml或者您無法使用它。

實施例:

<activity 
     android:name="com.yourpackage.YourActivity" 
     android:launchMode="singleTop" 
     android:configChanges="orientation" 
    > 
    </activity> 
+0

實現上面顯示'06-28 21:52:33.694:E/AndroidRuntime(8324):java.lang.RuntimeException:無法恢復活動{com.flipagain2/com.google.zxing.client.android。 CaptureActivity}:android.content.res.Resources $ NotFoundException:字符串資源ID#0x7f090039 ' –

2
Intent i = new Intent("android.intent.action.MAIN"); 
    i.setComponent(new ComponentName("com.mypkg.mystff","com.mypkg.mystuff.MyClass")); 

其他的答案是否正確,以及。然而,這將在設備的任何地方工作。

 <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 

添加到您的XML

+0

使用上面的代碼後,它不顯示任何錯誤或警告,但它甚至不會加載活動,它顯示此' 06-28 21:39:30.389:I/WindowManager(190):createSurface Window {41b19380 Toast paused = false}:立即繪製 ' –

+0

您是否用pac替換了軟件包kages?你叫'startActivity(i)'? –

+0

哎呀!對不起忘了,現在做完之後,它顯示出與上面相同的錯誤。我的Manifest.xml文件:http://j.mp/MsDzyA –

1

OK的一部分,所以有兩個部分組成,它們共同定義Activity位置。首先,是package attribute--下面是`「com.flipagain2」

還有就是android:name屬性,其中,例如,是.FlipAgain2Activity. 所以,這意味着在Android的查找您的活動,它正在尋找在

com.flipagain2.FlipAgain2Activity.有意義嗎?結合這兩件事。

所以,你要在兩個包活動。

更改第二(一個不工作」,看起來像這樣:

<activity android:name="com.package2.CaptureActivity" > 
    <intent-filter> 
     <action android:name="com.google.zxing.client.android.CaptureActivity" /> 
     <category android:name="android.intent.category.DEFAULT" /> 
    </intent-filter> 
</activity> 

你明白我改變將第一個Activity聲明相同,但改變第二android:name=匹配?全名,包括包。使用這種方法,每一個活動可以在不同的包。

+0

完成上面,但它是加載錯誤的包。它正在加載'com.flipagain2/com.google.zxing.client.android.CaptureActivity}'。它應該只加載'com.google.zxing.client.android.CaptureActivity' –

+0

如果將'FlipAgain2Activity'軟件包名稱更改爲'CaptureActivity'的現有軟件包名稱,我認爲這樣可以解決問題,但我該如何更改爲包已經存在 –

+0

ahhh好了,把'android:name ='改成完全限定的名稱,不要在'package'中放入任何東西。我忘了,它會自動附加'package'開始'android:name' – edthethird

相關問題