从Activity中返回数据--startActivityForResult的使用..

来源:互联网 发布:thug life软件 编辑:程序博客网 时间:2024/05/21 10:02

如何从一个被新启动的Activity中返回数据到原来的Activity中呢,这里我们用到startActivityForResult方法。假设我们有那么一个应用:在第一个Activity点击按钮后跳转到第二个Activity,而我们在第二个Activity中输入一个数在点击按钮后,返回到第一个Activity,而在第一个Acitivity的文本框中便能显示刚才在第二个中输入的数值。


1.在MainActivity中:

public void onClick(View v) {                int a = Integer.parseInt(editText.getText().toString());                int b = Integer.parseInt(editText2.getText().toString());                Intent intent = new Intent(MainActivity.this,OtherActivity.class);                intent.putExtra("a",a);                intent.putExtra("b",b);                startActivityForResult(intent,REQUESTCODE);            }
其中对REQUESTCODE的声明为:

private final static int REQUESTCODE = 1;

为什么这么声明现在还没搞很明白


2.在OtherActivity中:

Intent intent = getIntent();        int a = intent.getIntExtra("a", 0);        int b = intent.getIntExtra("b",0);        textView.setText(a+"+"+b+"= ?");        button.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                Intent intent =new Intent();                int c = Integer.parseInt(editText.getText().toString());                intent.putExtra("c",c);                setResult(22,intent);                finish();            }        });
其中setResult(22,intent)中的22是一个resultCode是自己随意定义的,用于返回到原来Activity时判断是从哪个Activity返回的。

3.在MainActivity还要加入onActivityResult,也就是Activity返回数据后的操作:

protected void onActivityResult(int requestCode, int resultCode, Intent data) {        super.onActivityResult(requestCode, resultCode, data);        if(resultCode == 22){            if(requestCode ==REQUESTCODE){                int c = data.getIntExtra("c",0);                textView.setText(String.valueOf(c));            }        }    }






0 0
原创粉丝点击