Bundle传值时,可以跨多个页面,例如从A跳到B,从B跳到C,从C传值到A,可直接传值。
A界面:
Bundle bundle= getIntent().getExtras();
if (bundle!=null) {
if (bundle.getStringArrayList("files")!=null) {
listfile= (ArrayList<String>) bundle.getSerializable("files");
Toast.makeText(MainActivity.this, "选择了"+listfile.size()+"张图片", 0).show();
listView.setVisibility(View.VISIBLE);
ArrayAdapter<String> arryAdapter=new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, listfile);
listView.setAdapter(arryAdapter);
}
}
C界面:
Intent intent =new Intent(this, MainActivity.class);
Bundle bundle=new Bundle();
bundle.putStringArrayList("files", listfile);
intent.putExtras(bundle);
startActivity(intent);
缺点:当从C回到A的时候,是重新新建了一个A,A界面原先的数据都不见了。
Intent传值时,要一个界面一个界面逐个传值。例如从A跳到B,从B跳到C,从C传值到A,要先从C传到B,再从B传到A。
A界面:
public void chise(View v){
Intent intent = new Intent();
intent.setClass(this,ImgFileListActivity.class);
intent.putExtra("listfile", listfile);
startActivityForResult(intent, TEST);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
if(requestCode==TEST){
String stringExtra = data.getStringExtra("hello");
System.out.println(stringExtra);
Toast.makeText(MainActivity.this,stringExtra , 0).show();
}
}
B界面: