Android实现intent跳转界面传递数据(2)——onActivityResult方法接收返回值

来源:互联网 发布:与该网络签署协议 编辑:程序博客网 时间:2024/05/16 12:11

当我们已经从主界面跳转到写一个界面之后,当我们返回倒主界面的时候,我们可以从第二个界面返回一些参数,在当前页面使用,这个时候我们就可以在第二个界面里面使用

setResult()方法来实现,其中,setResult()中的方法可以有两种,第一个是setResult(int resultcode)另一种是setResult(int resultcode,Intent intent)下面我们都来实现一下,先看第二个界面的java处理部分:

import android.app.Activity;import android.content.Intent;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.Button;public class SecondActivity extends Activity {    private Button btnFinish;    private ButtonListener buttonListener;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_second);        initView();        setListener();        if(getIntent()!=null){            Bundle bundle = getIntent().getBundleExtra(MainActivity.BUTTON_TITLE);            if(bundle!=null){                String buttonTitle = bundle.getString(MainActivity.BUTTON_TITLE);                btnFinish.setText(buttonTitle);            }            //String buttonTitle=getIntent().getStringExtra(MainActivity.BUTTON_TITLE);        }    }    public void initView(){        btnFinish= (Button) findViewById(R.id.btn_finish);    }    public void setListener(){        buttonListener = new ButtonListener();        btnFinish.setOnClickListener(buttonListener);    }    class ButtonListener implements View.OnClickListener{        @Override        public void onClick(View v) {            switch (v.getId()){                case R.id.btn_finish:                    Intent intent = new Intent();                    intent.putExtra("chen","chen");                    setResult(RESULT_OK,intent);                                        finish();                    break;            }        }    }}
在上述代码中,就是传递了一个RESULT_OK和一个自己创建的intent,intent里面就是自己要传回去给主界面来使用的值。

然后看我们的MainActivity里面的处理方式,首先要重写

protected void onActivityResult(int requestCode, int resultCode, Intent data)

这个方法就是在从前一个界面返回来的时候,索要调用的方法,其中requestCode是我们从主界面跳转到第二个界面的时候所传递的int类型,resultCode就是从第二个界面返回到主界面的时候,所接收的resultCode,也就是前面setResult中国的RESULT_OK,data就是传递进来的intent。

如果我们使用了这个方法,那么我们在跳转界面的时候,就不能使用startActivity(intent)这个方法来实现跳转了,要使用

startActivityForResult(intent,999);
这个方法来进行传递。下面来展示全部的java代码:

import android.content.Intent;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.TextView;import android.widget.Toast;public class MainActivity extends AppCompatActivity {    private Button btnToSecond;    private ButtonListener buttonListener;    public static final String BUTTON_TITLE = "button_title";    private TextView tvShow;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        initView();        setListener();    }    public void initView(){        btnToSecond= (Button) findViewById(R.id.btn_toSecond);        tvShow= (TextView) findViewById(R.id.tv_show);    }    public void setListener(){        buttonListener = new ButtonListener();        btnToSecond.setOnClickListener(buttonListener);    }    @Override    protected void onActivityResult(int requestCode, int resultCode, Intent data) {        super.onActivityResult(requestCode, resultCode, data);        if(requestCode == 999 && resultCode == RESULT_OK){            Toast.makeText(getApplicationContext(),"返回成功",Toast.LENGTH_SHORT).show();            if(data != null){                tvShow.setText(data.getStringExtra("chen"));            }        }    }    class ButtonListener implements View.OnClickListener{        @Override        public void onClick(View v) {            switch(v.getId()){                case R.id.btn_toSecond:                    Intent intent=new Intent(MainActivity.this,SecondActivity.class);                    //intent.putExtra(BUTTON_TITLE,"chen");                    Bundle bundle = new Bundle();                    bundle.putString(BUTTON_TITLE,"chen");                    intent.putExtra(BUTTON_TITLE,bundle);                    //intent.putExtra("cc",new User());                    //startActivity(intent);                    startActivityForResult(intent,999);                    break;            }        }    }}



0 0
原创粉丝点击