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

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

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;
            }
        }
    }
}



猜你喜欢

转载自blog.csdn.net/qq_29426541/article/details/71426402