2013-03-07 77 views
0

我想在Android 2.3中啓動我的MainActivity,它不會啓動,但在Jelly Bean中起作用。我沒有錯誤,沒有任何反應!未啓動MainActivity與android 2.3

我注意到當我使用putExtra時,它不起作用。有理由嗎?

開始MainActivity

final ComponentName cn = new ComponentName("de.application.ui", "de.application.ui.MainActivity"); 

    Intent intent = IntentCompat.makeRestartActivityTask(cn); 
    intent.putExtra("de.application.exit", true); // I have this line in it yet 
    activity.startActivity(intent); 

清單

<activity 
     android:theme="@style/Theme" 
     android:name=".ui.MainActivity" 
     android:launchMode="singleTop"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN"/> 
      <category android:name="android.intent.category.LAUNCHER"/> 
     </intent-filter> 
    </activity> 

我的解決方案,它的工作原理。

開始MainActivity

Intent intent = new Intent(activity, MainActivity.class); 
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_CLEAR_TASK|Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    intent.putExtra("de.application.exit", true); 
    activity.finish(); 
    activity.startActivity(intent); 

清單

<activity 
     android:theme="@style/Theme" 
     android:name=".ui.MainActivity"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN"/> 
      <category android:name="android.intent.category.LAUNCHER"/> 
     </intent-filter> 
    </activity> 
+0

如果刪除「android:theme ...」會怎麼樣? – lelloman 2013-03-07 14:55:55

+0

我修改了我的問題 – user949884 2013-03-07 15:24:59

+0

這不能按預期工作,因爲從主要活動中按回來按鈕會返回到以前的活動(如果您的堆棧中有任何內容) – 2014-02-03 15:53:05

回答

0

我這樣做是爲了啓動一個主要活動:

Intent intent = IntentCompat.makeRestartActivityTask(cn); 
activity.startActivity(intent); 


     Intent i = new Intent("android.intent.action.MAIN"); 
     final ComponentName cn = new ComponentName ("de.application.ui", "de.application.ui.MainActivity"); 

         i.setComponent(n);       

        try { 
         startActivity(i); 
        } 
        catch (ActivityNotFoundException e) { 

        } 
+0

在兩個平臺中都不起作用。 – user949884 2013-03-07 14:42:08

0

可能要試試這個:

Intent intent = new Intent("android.intent.action.MAIN"); 
    intent.addCategory("android.intent.category.LAUNCHER"); 
    intent.setComponent(new ComponentName("de.application.ui", "de.application.ui.MainActivity")); 
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    intent.putExtra("de.application.exit", true); 
    startActivity(intent); 
+0

我看到你正在使用'makeRestartActivityTask'。剛剛檢查過「Intent」的文檔,你可能想用'FLAG_ACTIVITY_CLEAR_TASK'作爲標誌。讓我知道它是否有效,然後我會更新我的答案。 – 2013-03-07 14:59:49

+0

我編輯了我的問題 – user949884 2013-03-07 15:24:36

+0

我已將putExtra調用添加到我的答案中。我在Android 2.2.1(索尼愛立信Xperia Ray)和4.2.2(Nexus 7)上測試過類似的代碼(相同的函數調用,相同的順序,但對'Intent'對象的函數調用是用不同的參數完成的)它工作得很好......問題不應該在函數調用imo。 – 2013-03-07 15:59:36