android—Activity間訊息互傳

來源:互聯網
上載者:User

當一個Activity1開啟一個新的Activity2時,可以將一個Bundle對象綁定在Intent中進行傳遞,而Bundle對象中可以儲存很多種類型的資料,支援的資料類型有int、string、ArrayList、List、boolean、byte、char等等,如果關閉Activity2返回Activity1時要傳遞資料,則Activity1需以startActivityForResult(intent,requestCode)方式開啟Activity2,並且Axtivity2設定setResult(RESULT_OK, intent),這樣當關閉Activity2時,就會觸發Activity的回呼函數onActivityResult();

完整代碼如下:

Activity1

代碼

    @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

btnjump=(Button)findViewById(R.id.btnload);
btnjump.setOnClickListener(this);
etname=(EditText)findViewById(R.id.actname);
etpwd=(EditText)findViewById(R.id.etpwd);
}

//被此Activity啟動的Activity返回結果時觸發的回呼函數
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data){
if(resultCode==RESULT_OK){
Bundle bundle=data.getExtras();
Toast.makeText(this, bundle.getString("name")+"/"+bundle.getString("pwd"), Toast.LENGTH_LONG);
}
super.onActivityResult(requestCode, resultCode, data);
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
String name=etname.getText().toString();
String pwd=etpwd.getText().toString();
Intent intent = new Intent();
Bundle bundle=new Bundle();
bundle.putString("name", name);
bundle.putString("pwd", pwd);
intent.putExtras(bundle);

//requestCode大於等於0,當返回Activity時,會回調onActivityResult()函數
int requestCode=0;
//啟動一個Activity,並且被啟動的Activity返回結果時會觸發回呼函數
this.startActivityForResult(intent,requestCode);
}

 

Activity2:

 

代碼

public class TwoActivity extends Activity {

public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
this.setContentView(R.layout.two);
TextView tvshow=(TextView)findViewById(R.id.tvShow);
Intent intent= this.getIntent();
Bundle bundle=intent.getExtras();
final String name=bundle.getString("name");
final String pwd=bundle.getString("pwd");
tvshow.setText(name+"/"+pwd);

Button btn=(Button)findViewById(R.id.btnback);
btn.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent data=new Intent();
Bundle extras = new Bundle();
extras.putString("name","返回:"+name );
extras.putString("pwd", "返回:"+pwd);
data.putExtras(extras);
TwoActivity.this.setResult(RESULT_OK, data);//返回資料
finish();
}
});
}
}

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.