多个Activity之间的跳转(1)
第一个例子:demo1
Main—>SecondActivity—>Main
从流程上看就是从Main跳转到SecondActivity,再从SecondActivity返回到Main。也就是将子Activity的数据返回给父Activity。
代码如下:
public class Main extends Activity { private Button btn; private TextView request_text; private final int FIRST_REQUEST_CODE = 1; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); request_text = (TextView)this.findViewById(R.id.request_text); btn = (Button)this.findViewById(R.id.btn); btn.setOnClickListener(new OnClickListener() { public void onClick(View v) { Intent i = new Intent(Main.this,SecondActivity.class); i.putExtra("request_text_for_main", "从Main传递到SecondActivity"); startActivityForResult(i, FIRST_REQUEST_CODE); } }); } protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if(requestCode==FIRST_REQUEST_CODE && resultCode==Activity.RESULT_OK){ if(data != null) { request_text.setText(data.getStringExtra("request")); } } } } Java代码 public class SecondActivity extends Activity{ private TextView request_text; private Button btn; private String text; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.second); request_text = (TextView)this.findViewById(R.id.request_text); if (getIntent().getStringExtra("request_text_for_main") != null) { text = getIntent().getStringExtra("request_text_for_main"); request_text.setText(text); } btn = (Button)this.findViewById(R.id.btn); btn.setOnClickListener(new OnClickListener() { public void onClick(View v) { Intent i = new Intent(); i.putExtra("request",text+"\n"+"从SecondActivity传递到ThirdActivity"); setResult(Activity.RESULT_OK,i); finish(); } }); } }
图一
图一所示是demo初始化的样子,点击“第一次跳转”进入图二。
图二
图二显示从Main到SecondActivity这个过程,再点击“第二次跳转”即返回Main这个Activity。
图三
图三表示跳转结束,Button按钮上面的文字记录跳转的过程。
这个例子最主要是第一个Activity Main设置的onActivityResult()方法和startActivityForResult()方法。
在Main中通过startActivityForResult()调用SecondActivity,然后在onActivityResult()中获取其返回参数,或者说通过onActivityResult()进行回调。
SecondActivity中要返回第一个Main必须:
setResult(Activity.RESULT_OK,i);
finish();