我的程序必须有二个activity,一个是A,一个是B,必须是先启动A,再由A跳到B。但是如果我正常从A启动并切换到B后,按home键,把程序切换到后台,再长按home键把程序切回来。此时退出程序。再长按home键来启动程序,程序会直接从B启动。有什么办法能确保,每次启动时都是从A启动。

解决方案 »

  1.   

    在你的启动的主Activity(也就是A)的manifist.xml里面添加如下两行就可以了
             android:launchMode="singleTask"
             android:clearTaskOnLaunch="true"
      

  2.   

    没遇到过这情况 , 你Manifest.xml里面主类的Intent-Filter设置了默认的android.intent.action.MAIN , 重启动程序应该不会出现这样的问题吧?!
    继续关注 
      

  3.   

    SunZhanwei,按你的方法试了一下,还是不行
      

  4.   

    在manifest中对A,B的设置如下:
    <activity android:name=".A" android:label="@string/app_name"  android:clearTaskOnLaunch="true"
    android:launchMode="singleTask">
    <intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
    </activity>
    <activity android:name=".B" android:launchMode="singleTask">
    <intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
    </activity>
      

  5.   

    再说明一下,这种情况只会在长按home启动时才会出现,如果从menu的程序列表中启动能够从A启动。
      

  6.   

    这个是我的xml文件
    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="activity.change"
          android:versionCode="1"
          android:versionName="1.0">
        <application android:icon="@drawable/icon" android:label="@string/app_name">
            <activity android:name=".ActivityChange"
               android:launchMode="singleTask"
               android:clearTaskOnLaunch="true"
                      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="ActivitySecond"
    />
        </application>
    </manifest> 
      

  7.   

    //这个是调用第二个的activity的代码
    public void onClick(View v)
    {
    Intent intent=new Intent();
    intent.setClass(ActivityChange.this, ActivitySecond.class);
    startActivity(intent);
    }
    我的按你的方式测试了,每次都成功啊,你是什么手机?
      

  8.   

    你的B的那个Activty怎么有红色部分的啊,这个不对吧
    <activity android:name=".B" android:launchMode="singleTask">
    <intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.DEFAULT" />

    </intent-filter>
      

  9.   

    把B的Activity里面的Intent-Filter去掉试试了
      

  10.   

    现在我把manifest文件变成这样也不行
    <activity android:name=".A" android:label="@string/app_name" android:clearTaskOnLaunch="true"
    android:launchMode="singleTask">
    <intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
    </activity>
    <activity android:name=".B" android:launchMode="singleTask">
    </activity>
    我的手机是htm magic
      

  11.   

    我的操作流程是这样:
    1.启动程序
    2.从A跳到B
    3.按home把程序切到后台
    4.长按home把程序切回来
    5.退出程序
    6.长按home,再从home菜单中启动程序,此时程序直接从B启动