1,新建一个activity,如Activity2,在清单文件AndroidManifest.xml 中 application节点中 增加一个新窗体:
.................
</activity>
<activity android:name=".ortherActivity" android:label="新窗口"/> </application>2,在主程序中:
Intent intent = new Intent(MainActivity.this, Activity2.class);
//打开新窗口。参数:主窗口,被调用窗口
Bundle bundle = new Bundle();//通过Bundle实现数据的传递:
bundle.putString("key1", "value1");// key1为名,value1为值 bundle.putString("key2", "value2"); bundle.putInt("keyInt1", 100); intent.putExtras(bundle); // 传数据
如果不需要子窗口回传数据:
startActivity(intent);
如果需要子窗口回传数据:
(1),startActivityForResult(intent, requestCode);
此处要注意,requestCode是子窗口的id标志,而且必须大于1,否则回调函数onActivityResult不响应!
(2),实现回调函数onActivityResult:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) { .....}
主窗只有一个回调函数,如果调用了几个子窗口,就需通过requestCode来区分。而resultCode则是子窗口的返回值,可以用于后续的判断。
3,在新窗口中仍然使用Bundle取得数据:
Bundle bundle = this.getIntent().getExtras(); String s1 = bundle.getString("key1"); String s2 = bundle.getString("key2"); int i=bundle.getInt("keyInt1");
4,如何返回到主窗口?
Intent intent=new Intent();
Bundle bunle=new Bundle(); bunle.putString("key1", "这是子窗口的返回数据."); intent.putExtras(bunle); //SubActivity.this.setResult(RESULT_OK, intent); //SubActivity.this.finish(); setResult(RESULT_OK, intent); //设置返回结果 finish(); //关闭子窗口,否则数据无法返回5,参考
转自:http://blog.sina.com.cn/s/blog_3ecf39a70101axmo.html