繁体   English   中英

Android:缺少onActivityResult()本地数据

[英]Android: onActivityResult() local data is missing

我有两个活动(Activity1和Activity2)。 Activity1启动Activity2以获取一些数据。 每当我回到Activity1时,onCreate方法都会在onActivityResult()之前运行。所有数据都消失了。 为什么onCreate方法第二次运行且数据丢失?

您可以在下面查看示例代码以查看示例方案。 在这种情况下,onActivityResult方法中var1的值应为5,但应为0。

public class MainActivity1 extends ActionBarActivity 
{
    TextView textView1;
    Button button1;
    int var1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main_activity1);

        textView1 = (TextView) findViewById(R.id.textView1);
        button1 = (Button) findViewById(R.id.button1);

        button1.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View arg0) {
                var1 = 5;
                Intent intent = new Intent(MainActivity1.this, MainActivity2.class);
                startActivityForResult(intent, 2);// Activity is started with requestCode 2
            }
        });
    }

    // Call Back method  to get the Message form other Activity
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if (requestCode == 2) {
            String message = data.getStringExtra("MESSAGE");
            textView1.setText("value =" + var1);

        }
    }

}


public class MainActivity2 extends ActionBarActivity {

    EditText editText1;
    Button button1;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main_activity2);

        editText1=(EditText)findViewById(R.id.editText1);
        button1=(Button)findViewById(R.id.button1);

        button1.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View arg0) {
                String message=editText1.getText().toString();
                Intent intent=new Intent();
                intent.putExtra("MESSAGE",message);

                setResult(2,intent);

                finish();//finishing activity
            }
        });
    }

}

你这样做是错的。 您正在按意图保存字符串。 然后,在onActivityResult方法中,从意图中检索String,然后将TextView的文本设置为"value =" var1 ,但您没有从意图中加载var1

您应该将值var1保存在MainActivity2的意图中,然后在onActivityResult方法中从意图中检索它。

在“设置”>“开发人员选项”中,有一个名为“不保留活动”的设置。 确保未启用此功能,否则该活动将在您启动第二个活动后立即销毁,并且您将在返回第一个活动时重新创建它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM