startActivityForResult和setResult

来源:互联网 发布:恐怖小说 知乎 编辑:程序博客网 时间:2024/06/08 09:58

通过startActivityForResult和setResult获得返回值

startActivityForResult

如下是一个例子:

        button.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                Intent intent = new Intent(MainActivity.this,OtherActivity.class);                intent.putExtra("first",first.getText().toString());                intent.putExtra("second",second.getText().toString());                startActivityForResult(intent, requestCode);            }        });

其中startActivityForResult的两个参数分别是,获得传递的意图以及确定返回值是哪一个方法发起的。

同时必须声明onActivityResult方法对返回的值进行处理。

  protected void onActivityResult(int requestCode, int resultCode, Intent data) {        super.onActivityResult(requestCode, resultCode, data);        if(resultCode == RESULT_OK){            if(requestCode == 1){                int three = Integer.parseInt(data.getStringExtra("result"));                result.setText(String.valueOf(three));            }        }else{            result.setText("结果错误");        }       // result.setText("dasdf");       Toast.makeText(this,"ceshiyong",Toast.LENGTH_SHORT).show();    }

其中三个参数的含义:
1. requestCode 这个是intent发起类中确定的参数用来确定是哪个方法发起的
2. resultCode这个是setResult 返回的已确定是哪个类返回的参数
3. data 这个是setResult返回的参数


setResult

例子如下:

       button.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                Intent intent = new Intent(OtherActivity.this,MainActivity.class);                intent.putExtra("result",String.valueOf(editText.getText()));                //startActivity(intent);                setResult(RESULT_OK,intent);                finish();            }        });

需要注意的是在结束后一定要finish() 结束这个Activity

1 0