Android使用Intent讓不一樣Activity切換,並傳遞參數

基本用法:java

顯式ide

Intent intent=new Intent(Activity甲.this,Activity乙.class);

startActivity(intent);

  

傳遞參數函數

Intent intent=new Intent(Activity甲.this,Activity乙.class);
intent.putExtra("參數名","要傳的價值,能夠是任何類型");
startActivity(intent);

獲取參數this

在目標Activity中blog

Intent intent=getIntent();
String data=intent.getStringExtra("參數名");

 

進階:get

除了startActivity方法外,還能夠使用startActivityForResult方法,感受相似於觀察者模式it

startActivityForResult方法第一個參數仍是intent實例,第二個參數爲自定義的requestCode代碼,定之後能夠在Activity乙返回時(按按鈕或Back鍵)做相對應的操做。class

需重寫Activity甲中的onActivityResult函數sed

 

在Activity甲中List

Intent intent=new Intent(Activity甲.this,Activity.乙.class);
startActivityForResult(intent,1);

在Activity乙中經過按鈕返回Activity甲

Button btnBack=(Button)findViewById(R.id.btnBack);

btnBack.setOnClickListener(new OnClickListener(){

    @Override
    public void onClick(View v){
  
        Intent intent=new Intent();
        setResult(RESULT_OK,intent);
        finish();        

    }

});

在Activity乙中經過返回按鈕Back(機器上的)返回Activity甲

需重寫onBackPressed函數

@Override
public void onBackPressed(){

    Intent intent=new Intent();
    intent.putExtra("參數名","值");
    setResult(RESULT_OK,intent);
    finish();

}

  

 

最後在Activity甲中重寫onActivityResult函數

@Override
protected void on ActivityResult(int requestCode,int resultCode,Intent data){
    
    switch(requestCode){
        case 1:
            if(resultCode=RESULT_OK){
    
                String returnData=data.getStringExtra("參數名");

            }

    }


}

  

 

其中case 1就是在創建intent時所存放的第二個參數,爲requestCode

 

finish

相關文章
相關標籤/搜索