通过意图开始上一个活动时,getbundle为null

时间:2019-02-23 19:36:57

标签: android android-activity

我的代码FirstActivity和SecondActivity中有两个活动。

从FirstActivity我启动SecondActivity,请参见下面的代码

        Intent intent = new Intent(getBaseContext(), SecondActivity.class);
        intent.putExtra("text", "someValue");
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP);
        startActivity(intent);

这可以正常工作,我可以读取在FirstActivity中putExtra中添加的SecondActivity中的值。

在SecondActivity中,我有一些复杂的代码,但是在某些地方,我需要启动FirstActivity,并按照以下代码进行操作

            Intent intent = new Intent(getBaseContext(), FirstActivity);
            Bundle bundle = new Bundle();

            /* tested with both bundle and put extra none of them worked
            */
            bundle.putString("text2", "someOtherString");
            intent.putExtra("text3", "someOtherString");                 
            intent.putExtras(bundle);

            intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            startActivity(intent);
            finish();

这将启动FirstActivity,但是当我检查代码(在FirstActivity中)

@Override
protected void onStart() {
    super.onStart();
    Intent intent = getIntent();
    if(intent != null) {
        String string, string2;

        Bundle bundle = intent.getExtras();
        if(bundle != null) {
            string = bundle.getString("text2"); //return empty
        }
        string2 = intent.getStringExtra("text3") //returns empty

    }

}

我不明白为什么它是空的? 我应该用不同的标志开始活动吗?如果是,请说明原因。

1 个答案:

答案 0 :(得分:0)

您需要在secondActivity中使用一个接口,并在firstActivity中对其进行实现。因为您的逻辑从第二到第一是错误的。