多个activity跳转总结

第一个例子:demo1
Main—>SecondActivity—>Main
从流程上看就是从Main跳转到SecondActivity,再从SecondActivity返回到Main。也就是将子Activity的数据返回给父Activity。

代码:

  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 = (TextView)this.findViewById(R.id.request_text);   
  14.            
  15.         btn = (Button)this.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. }  

 

  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 = (TextView)this.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 = (Button)this.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. }  
  29. 图一所示是demo初始化的样子,点击“第一次跳转”进入图二。
  30. 图二显示从Main到SecondActivity这个过程,再点击“第二次跳转”即返回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
这个例子的流程,比上一个更复杂一些,经历了3个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 = (TextView)this.findViewById(R.id.request_text);   
  14.            
  15.         btn = (Button)this.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. }  
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"));
    		}
    	}
    }
}



Java代码:

  1. public class SecondActivity extends Activity{   
  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 = (TextView)this.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 = (Button)this.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.        
  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代码:

  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 = (TextView)this.findViewById(R.id.request_text);   
  13.         request_text.setText(text);   
  14.            
  15.         btn = (Button)this.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();   
  22.             }   
  23.         });   
  24.     }   
  25.        
  26. }  

 

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

第三个例子: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 = (TextView)this.findViewById(R.id.request_text);   
  13.            
  14.         btn = (Button)this.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. }  
  1. Java代码:

    1. public class SecondActivity extends Activity{   
    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 = (TextView)this.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 = (Button)this.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 = (Button)this.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. }  

 

  1. Java代码:
    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);
        		}
        	}
        }
    }


     

    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 = (TextView)this.findViewById(R.id.request_text);   
    13.         request_text.setText(text);   
    14.            
    15.         btn = (Button)this.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的。

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值