2 qq 21504369 qq_21504369 于 2016.01.20 21:20 提问

Activity通过startActivityForResult()启动自身,singleTop失效

问题焦点:设置活动启动模式singleTop失效

场景:一个activity通过button监听跳转到自身
原因:跳转时启动活动的方法是startActivityForResult()

换成startActivity()就正常。

想问的问题:当前的活动应该是在栈顶的啊,为什么点击button之后又去新创建了一个活动实例?
startActivityForResult()是在当前活动的onCreate()方法中的button的监听事件里调用的,这个方法只是在销毁活动之前给上一个活动传递数据,对活动的生命周期有影响吗?
singleTop模式没起作用,应该就是当前活动不在栈顶,和startActivityForResult()有什么冲突?百度没查到

代码附上:
FirstActivity.java

public class FirstActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        Log.d("FirstActivity","Task id is " + getTaskId() +this.toString());
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.first_layout);
        Button button1 = (Button) findViewById(R.id.button_1);
        button1.setOnClickListener(new OnClickListener(){
            @Override
            public void onClick(View v){
                Intent intent = new Intent(FirstActivity.this,FirstActivity.class);
                startActivityForResult(intent,1);
//              startActivity(intent);
            }
        });
    }


}

AndroidManifest.xml

 <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >

        <activity
            android:name=".FirstActivity"
            android:launchMode="singleTop"
            android:label="This is FirstActity" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

3个回答

caozhy
caozhy   Ds   Rxr 2016.01.20 22:13
qq_21504369
qq_21504369 谢谢,这个有看到过,我知道startActivityForResult()的正确用法,我只是想问问我这样不正确的写是哪里触发的错误?
接近 2 年之前 回复
qq_15771061
qq_15771061   2016.01.22 14:10

对,使用SingleTop或者SingleInstance的方式启动的Activity来说,调用startActivityForResult()系统
直接返回Activity.RESULT_CANCELED而不会再去等待返回

Mr_dsw
Mr_dsw   Ds   Rxr 2016.01.20 21:43

singletop就是在栈顶不创建

qq_21504369
qq_21504369 回复晨风晓梦: 已回答,注意查收
接近 2 年之前 回复
qq_33804558
qq_33804558 能不能帮我解决一下我的问题,在下一页,和这个问题差不多,安卓中onActivityResult方法无法获取返回的resultCode和data问题,求解
接近 2 年之前 回复
qq_21504369
qq_21504369 我想问问为什么不在栈顶了?startActicityForResult()对活动在不在栈顶有什么影响吗?
接近 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!