簡體   English   中英

為什么不首先啟動 MAIN 和 LAUNCHER 活動?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM