多个Activity跳转的小结
转载请注明出处
在android开发中Activity相当于web开发的页面,或者说如j2ee开发中对应的jsp页面。在开发jsp时,经常会遇到页面跳转的问题,在android也同样会遇到。以下的几个例子是我对android的Activity跳转的小结,也是最近做项目的小结。
第一个例子: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")); } } }}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();}});}}


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_FIRST_USER){ if(data != null) { request_text.setText(data.getStringExtra("request_text_for_third")); } } }}public class SecondActivity extends Activity{private TextView request_text;private Button btn;private final int SECOND_REQUEST_CODE = 2;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(SecondActivity.this,ThirdActivity.class);i.putExtra("request_text_for_second", text+"\n"+"从SecondActivity传递到ThirdActivity");startActivityForResult(i, SECOND_REQUEST_CODE);}});}@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);if(requestCode==SECOND_REQUEST_CODE && data != null){setResult(Activity.RESULT_FIRST_USER, data);finish();}}}public class ThirdActivity extends Activity{private TextView request_text;private Button btn;private String text;public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.third); text = getIntent().getStringExtra("request_text_for_second"); request_text = (TextView)this.findViewById(R.id.request_text); 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_for_third", text+"\n"+"从ThirdActivity再次传递到Main");setResult(Activity.RESULT_FIRST_USER, i);finish();}});}}



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_FIRST_USER){ if(data != null) { request_text.setText(data.getStringExtra("final_request")); } } }}public class SecondActivity extends Activity{private TextView request_text;private Button btn,finalBtn;private final int SECOND_REQUEST_CODE = 2;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(SecondActivity.this,ThirdActivity.class);i.putExtra("request_text_for_second", text+"\n"+"从SecondActivity传递到ThirdActivity");startActivityForResult(i, SECOND_REQUEST_CODE);}}); finalBtn = (Button)this.findViewById(R.id.finalBtn); finalBtn.setOnClickListener(new OnClickListener() {public void onClick(View v) {Intent i = new Intent();i.putExtra("final_request", text+"\n"+"从SecondActivity最后传递到Main");setResult(Activity.RESULT_FIRST_USER,i);finish();}});} protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if(requestCode==SECOND_REQUEST_CODE && resultCode==Activity.RESULT_OK){ if(data != null) { text = data.getStringExtra("request_text_for_third"); request_text.setText(text); } } }}public class ThirdActivity extends Activity{private TextView request_text;private Button btn;private String text;public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.third); text = getIntent().getStringExtra("request_text_for_second"); request_text = (TextView)this.findViewById(R.id.request_text); 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_for_third", text+"\n"+"从ThirdActivity再次传递到SecondActivity");setResult(Activity.RESULT_OK, i);finish();}});}}



