[英]Why isn't the MAIN and LAUNCHER activity not starting first?
我有 2 個活動,“Splash”和“StartingPoint”。 我的 XML 明確指出“Splash”是帶有 MAIN 和 LAUNCHER 的活動,但是在運行應用程序時,“StartingPoint”似乎總是首先運行。 我該如何解決?
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.commer.commest"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="18" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity android:name="com.commer.commest.Splash"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="com.commer.commest.StartingPoint"
android:label="@string/app_name">
<intent-filter>
<action android:name="com.commer.commest.STARTINGPOINT" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
</application>
</manifest>
遇到類似問題,
就我而言,罪魁禍首是
android:launchMode="singleInstance"
我必須從 Splash 中刪除它才能每次啟動它。
<activity
android:name=".features.splash.SplashActivity"
android:launchMode="singleInstance" // had to remove this
android:screenOrientation="portrait"
android:theme="@style/SplashTheme"
android:windowSoftInputMode="stateHidden">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity
android:name=".features.login.LoginActivity"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden" />
更新如:
<activity android:name="com.commer.commest.StartingPoint"
android:label="@string/app_name">
</activity>
代替
<activity android:name="com.commer.commest.StartingPoint"
android:label="@string/app_name">
<intent-filter>
<action android:name="com.commer.commest.STARTINGPOINT" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<intent-filter>
<action android:name="com.commer.commest.STARTINGPOINT" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
刪除這些行。 你的問題解決了
實際上,您將此應用程序設為默認啟動器應用程序,無需編寫它
請享用
您可以嘗試將活動 android:name 更改為 .Splash only,以及您的起點。
<activity android:name=".Splash"
<activity android:name=".StartingPoint"
你應該改變這個:
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity android:name="com.commer.commest.Splash"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="com.commer.commest.StartingPoint"/>
</application>
您已在com.commer.commest.STARTINGPOINT
活動中添加了默認類別,這就是您面臨此問題的原因。 從活動 com.commer.commest.STARTINGPOINT 中刪除意圖過濾器。 為什么要在此處添加 DEFAULT 類別? 如果您想了解默認類別的使用,請點擊此處的鏈接
簡而言之,如果您將 CATEGORY_DEFAULT 添加到活動中,它將成為應用程序上下文的默認活動。 因此,無論何時Context.startActivity()
調用,您的默認活動都會被聲明。
享受編碼!!
顧名思義,DEFAULT 類別(意圖過濾器)用於將某些操作聲明為默認操作。 例如,如果您希望在打開應用程序時打開特定活動。 你在你的清單中實現這個:
<intent-filter>
<action android:name="package name" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
嘗試從包名稱“com.commer.commest.StartingPoint”下的代碼中刪除意圖過濾器。 像這樣:
<activity android:name="com.commer.commest.StartingPoint"
android:label="@string/app_name">
</activity>
您應該按照以下線程的建議檢查運行配置: https : //stackoverflow.com/a/19311925/2219924
我遇到了完全相同的問題,也嘗試了這里建議的所有內容,但都沒有成功。 是 Eclipse 本身造成了痛苦...
花費時間后發現配置級別的問題。
您可以通過轉到“編輯配置”菜單(點擊“Shift”三下,鍵入“編輯配置”),然后將啟動選項 > 啟動更改為“無”,讓 Android Studio 不抱怨。
我可能會添加一個包含說明的通用活動。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.