2013-01-16 137 views
1

我有一個項目,兩個包first.packsecond.pack,與兩個不同的活動。我試圖與該代碼開始活動從兩個不同的包

Intent intent = new Intent(Intent.ACTION_MAIN); 
     intent.setComponent(new ComponentName("second.pack", "second.pack.SecondActivity")); 
     startActivity(intent); 

奇怪的是,這個代碼已經有一段工作開始從第一個第二個活動,但在我unistalled並重新安裝應用程序,它開始迴歸我出現以下錯誤:

Caused by: android.content.ActivityNotFoundException: Unable to find explicit activity class {second.pack/second.pack.SecondActivity}; have you declared this activity in your AndroidManifest.xml? 

我在哪裏錯了?

回答

1

確保在AndroidManifest.xml文件中,該活動已經這樣定義:

<activity 
     android:name="second.pack.SecondActivity" 
     android:label="@string/yor_title"/> 
0

你有一個項目,2包,但在這個項目有多少應用程序有哪些?我們假設只有一個應用程序。 ComponentName的第一個參數是應用程序的包名,不管您想要調用的活動的包名是什麼。

所以,如果你只有一個應用程序,它包「first.pack」,從中你要調用一個包「second.pack」的活動,那麼正確的調用是:

Intent intent = new Intent(Intent.ACTION_MAIN); 
    intent.setComponent(new ComponentName("first.pack", "second.pack.SecondActivity")); 
    startActivity(intent); 

它停止工作的一個可能原因可能是您更改了應用程序的包(例如,從「second.pack」更改爲「first.pack」)。

0

當有應用程序中的不同的包,請執行下列操作第一:

<activity android:name=".Kunal.Android" /> 

聲明在manifest.xml該活動。

Intent intent = new Intent(MainActivity.this,Second package name.class); 

以下是我的代碼:

switch (position) { 
    case 0: 
     Intent newActivity = new Intent(MainActivity.this,com.example.owner.listview_1.Kunal.Android.class); 
     startActivity(newActivity); 
     break; 
    case 1: 
     Intent newActivity1 = new Intent(MainActivity.this, com.example.owner.listview_1.Kunal.Iphone.class); 
     startActivity(newActivity1); 
     break; 
    case 2: 
     Intent newActivity2 = new Intent(MainActivity.this,com.example.owner.listview_1.Kunal.Window.class); 
     startActivity(newActivity2); 
     break; 
}