多个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初始化的样子,点击第一次跳转进入图二。 

 
图二 
图二显示从MainSecondActivity这个过程,再点击第二次跳转即返回Main这个Activity 

 
图三 
图三表示跳转结束,Button按钮上面的文字记录跳转的过程。 

这个例子最主要是第一个Activity Main设置的onActivityResult()方法和startActivityForResult()方法。 
Main中通过startActivityForResult()调用SecondActivity,然后在onActivityResult()中获取其返回参数,或者说通过onActivityResult()进行回调。 

SecondActivity中要返回第一个Main必须: 
setResult(Activity.RESULT_OK,i); 
finish(); 

 

 

 

posted @ 2014-04-09 16:57  流动的存在  阅读(746)  评论(0编辑  收藏  举报