当我们已经从主界面跳转到写一个界面之后,当我们返回倒主界面的时候,我们可以从第二个界面返回一些参数,在当前页面使用,这个时候我们就可以在第二个界面里面使用
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; } } } }