Android多个Activity之间跳转的总结

发布时间:2012-07-20

多个Activity跳转的小结


第一个例子:demo1 Main>SecondActivity>Main 从流程上看就是从Main跳转到SecondActivity再从SecondActivity返回到Main也就是将子Activity的数据返回给父Activity 代码如下: Java代码
1. public class Main extends Activity { 2.
3. private Button btn;
4. private TextView request_text;
5. private final int FIRST_REQUEST_CODE = 1; 6.
7. /** Called when the activity is first created. */ 8. @Override
9. public void onCreate(Bundle savedInstanceState { 10. super.onCreate(savedInstanceState; 11. setContentView(R.layout.main; 12.
13. request_text = (TextViewthis.findViewById(R.id.request_text; 14.
15. btn = (Buttonthis.findViewById(R.id.btn; 16. btn.setOnClickListener(new OnClickListener( { 17. public void onClick(View v {
18. Intent i = new Intent(Main.this,SecondActivity.class; 19. i.putExtra("request_text_for_main", "Main传递到SecondActivity";
20. startActivityForResult(i, FIRST_REQUEST_CODE; 21. } 22. }; 23. } 24.
25. protected void onActivityResult(int requestCode, int resultCode, Intent data {
26. super.onActivityResult(requestCode, resultCode, data;
27. if(requestCode==FIRST_REQUEST_CODE && resultCode==Activity.RESULT_OK{
28. if(data != null {

29. request_text.setText(data.getStringExtra("request"; 30. } 31. } 32. } 33. }

Java代码
1. public class SecondActivity extends Activity{ 2.
3. private TextView request_text; 4. private Button btn; 5. private String text; 6.
7. public void onCreate(Bundle savedInstanceState { 8. super.onCreate(savedInstanceState; 9. setContentView(R.layout.second; 10.
11. request_text = (TextViewthis.findViewById(R.id.request_text; 12.
13. if (getIntent(.getStringExtra("request_text_for_main" != null { 14. text = getIntent(.getStringExtra("request_text_for_main"; 15. request_text.setText(text; 16. } 17.
18. btn = (Buttonthis.findViewById(R.id.btn; 19. btn.setOnClickListener(new OnClickListener( { 20. public void onClick(View v { 21. Intent i = new Intent(;
22. i.putExtra("request",text+"\n"+"SecondActivity传递到ThirdActivity";
23. setResult(Activity.RESULT_OK,i; 24. finish(; 25. } 26. }; 27. } 28. }



图一
图一所示是demo初始化的样子,点击第一次跳转进入图二。
图二 图二显示从MainSecondActivity这个过程,再点击第二次跳转即返回Main这个Activity
图三
图三表示跳转结束,Button按钮上面的文字记录跳转的过程。
这个例子最主要是第一个Activity Main设置的onActivityResult(方法和startActivityForResult(方法。 Main中通过startActivityForResult(调用SecondActivity然后在onActivityResult(中获取其返回参数,或者说通过onActivityResult(进行回调。
SecondActivity中要返回第一个Main必须: setResult(Activity.RESULT_OK,i; finish(;

第二个例子:demo2 Main>SecondActivity>ThirdActivity>Main 这个例子的流程,比上一个更复杂一些,经历了3Activity最好跳转回第一个Activity 代码如下: Java代码
1. public class Main extends Activity { 2.
3. private Button btn;
4. private TextView request_text;
5. private final int FIRST_REQUEST_CODE = 1; 6.
7. /** Called when the activity is first created. */ 8. @Override
9. public void onCreate(Bundle savedInstanceState { 10. super.onCreate(savedInstanceState; 11. setContentView(R.layout.main; 12.
13. request_text = (TextViewthis.findViewById(R.id.request_text; 14.
15. btn = (Buttonthis.findViewById(R.id.btn; 16. btn.setOnClickListener(new OnClickListener( { 17. public void onClick(View v {
18. Intent i = new Intent(Main.this,SecondActivity.class; 19. i.putExtra("request_text_for_main", "Main传递到SecondActivity";

20. startActivityForResult(i, FIRST_REQUEST_CODE; 21. } 22. }; 23. } 24.
25. protected void onActivityResult(int requestCode, int resultCode, Intent data {
26. super.onActivityResult(requestCode, resultCode, data;
27. if(requestCode==FIRST_REQUEST_CODE && resultCode==Activity.RESULT_FIRST_USER{
28. if(data != null {
29. request_text.setText(data.getStringExtra("request_text_for_third"; 30. } 31. } 32. } 33. }

Java代码 2.
3. private TextView request_text; 4. private Button btn;
5. private final int SECOND_REQUEST_CODE = 2; 6. private String text; 7.
8. public void onCreate(Bundle savedInstanceState { 9. super.onCreate(savedInstanceState; 10. setContentView(R.layout.second; 11.
12. request_text = (TextViewthis.findViewById(R.id.request_text; 13.
14. if (getIntent(.getStringExtra("request_text_for_main" != null { 15. text = getIntent(.getStringExtra("request_text_for_main"; 16. request_text.setText(text; 17. } 18.
19. btn = (Buttonthis.findViewById(R.id.btn; 20. btn.setOnClickListener(new OnClickListener( { 21. public void onClick(View v {
22. Intent i = new Intent(SecondActivity.this,ThirdActivity.class;

1. public class SecondActivity extends Activity{

23. i.putExtra("request_text_for_second", text+"\n"+"SecondActivity传递到ThirdActivity";
24. startActivityForResult(i, SECOND_REQUEST_CODE; 25. } 26. }; 27. } 28.
29. @Override
30. protected void onActivityResult(int requestCode, int resultCode, Intent data {
31. super.onActivityResult(requestCode, resultCode, data; 32. if(requestCode==SECOND_REQUEST_CODE && data != null{ 33. setResult(Activity.RESULT_FIRST_USER, data; 34. finish(; 35. } 36. } 37. }


Java代码 2.
3. private TextView request_text; 4. private Button btn; 5. private String text; 6.
7. public void onCreate(Bundle savedInstanceState { 8. super.onCreate(savedInstanceState; 9. setContentView(R.layout.third; 10.
11. text = getIntent(.getStringExtra("request_text_for_second"; 12. request_text = (TextViewthis.findViewById(R.id.request_text; 13. request_text.setText(text; 14.
15. btn = (Buttonthis.findViewById(R.id.btn; 16. btn.setOnClickListener(new OnClickListener( { 17. public void onClick(View v { 18. Intent i = new Intent(;
19. i.putExtra("request_text_for_third", text+"\n"+"ThirdActivity再次传递到Main";
20. setResult(Activity.RESULT_FIRST_USER, i; 21. finish(;

1. public class ThirdActivity extends Activity{

22. } 23. }; 24. } 25. 26. }







这个demo2比起前面的demo1的不同之处在于就是通过ThirdActivity进行跳转到Main 在代码上的区别是: (1MainonActivityResult(方法中,它的resultCode==Activity.RESULT_FIRST_USER不是前面的resultCode==Activity.RESULT_OK (2SecondActivity中增加了onActivityResult(方法,该方法是用于回调ThirdActivity,并且该方法执行了跳转过程跳转到Main这个Activity (3 ThirdActivitydemo1SecondActivity很类似。

第三个例子:demo3 Main>SecondActivity>ThirdActivity>SecondActivity>Main 这个过程看起来复杂,其实不然,最后一步是借助SecondActivity的另一个Button实现的。 代码如下: Java代码
1. public class Main extends Activity { 2. private Button btn;
3. private TextView request_text;
4. private final int FIRST_REQUEST_CODE = 1; 5.
6. /** Called when the activity is first created. */ 7. @Override
8. public void onCreate(Bundle savedInstanceState { 9. super.onCreate(savedInstanceState;

10. setContentView(R.layout.main; 11.
12. request_text = (TextViewthis.findViewById(R.id.request_text; 13.
14. btn = (Buttonthis.findViewById(R.id.btn; 15. btn.setOnClickListener(new OnClickListener( { 16. public void onClick(View v {
17. Intent i = new Intent(Main.this,SecondActivity.class; 18. i.putExtra("request_text_for_main", "Main传递到SecondActivity";
19. startActivityForResult(i, FIRST_REQUEST_CODE; 20. } 21. }; 22. } 23.
24. protected void onActivityResult(int requestCode, int resultCode, Intent data {
25. super.onActivityResult(requestCode, resultCode, data;
26. if(requestCode==FIRST_REQUEST_CODE && resultCode==Activity.RESULT_FIRST_USER{
27. if(data != null {
28. request_text.setText(data.getStringExtra("final_request";
29. } 30. } 31. } 32. }

Java代码 2.
3. private TextView request_text; 4. private Button btn,finalBtn;
5. private final int SECOND_REQUEST_CODE = 2; 6. private String text; 7.
8. public void onCreate(Bundle savedInstanceState { 9. super.onCreate(savedInstanceState; 10. setContentView(R.layout.second; 11.
12. request_text = (TextViewthis.findViewById(R.id.request_text; 13.

1. public class SecondActivity extends Activity{

14. if (getIntent(.getStringExtra("request_text_for_main" != null { 15. text = getIntent(.getStringExtra("request_text_for_main"; 16. request_text.setText(text; 17. } 18.
19. btn = (Buttonthis.findViewById(R.id.btn; 20. btn.setOnClickListener(new OnClickListener( { 21. public void onClick(View v {
22. Intent i = new Intent(SecondActivity.this,ThirdActivity.class;
23. i.putExtra("request_text_for_second", text+"\n"+"SecondActivity传递到ThirdActivity";
24. startActivityForResult(i, SECOND_REQUEST_CODE; 25. } 26. }; 27.
28. finalBtn = (Buttonthis.findViewById(R.id.finalBtn; 29. finalBtn.setOnClickListener(new OnClickListener( { 30. public void onClick(View v { 31. Intent i = new Intent(;
32. i.putExtra("final_request", text+"\n"+"SecondActivity最后传递到Main";
33. setResult(Activity.RESULT_FIRST_USER,i; 34. finish(; 35. } 36. }; 37. } 38.
39. protected void onActivityResult(int requestCode, int resultCode, Intent data {
40. super.onActivityResult(requestCode, resultCode, data;
41. if(requestCode==SECOND_REQUEST_CODE && resultCode==Activity.RESULT_OK{
42. if(data != null {
43. text = data.getStringExtra("request_text_for_third"; 44. request_text.setText(text; 45. } 46. } 47. } 48. }

Java代码

1. public class ThirdActivity extends Activity{ 2.
3. private TextView request_text; 4. private Button btn; 5. private String text; 6.
7. public void onCreate(Bundle savedInstanceState { 8. super.onCreate(savedInstanceState; 9. setContentView(R.layout.third; 10.
11. text = getIntent(.getStringExtra("request_text_for_second"; 12. request_text = (TextViewthis.findViewById(R.id.request_text; 13. request_text.setText(text; 14.
15. btn = (Buttonthis.findViewById(R.id.btn; 16. btn.setOnClickListener(new OnClickListener( { 17. public void onClick(View v { 18. Intent i = new Intent(;
19. i.putExtra("request_text_for_third", text+"\n"+"ThirdActivity再次传递到SecondActivity";
20. setResult(Activity.RESULT_OK, i; 21. finish(; 22. } 23. }; 24. } 25. }










比起前一个demo2其实没有更复杂之处,只是从ThirdActivity跳转回SecondActivity,而通过SecondActivity的另一个Button来跳转回Main的。

Android多个Activity之间跳转的总结

相关推荐