`
yaku2688
  • 浏览: 89156 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Android多个Activity

阅读更多

使用多个Activity首先在AndroidManifest.xml文件中声明:

<activity android:name="com.yaku.B"/>

 

如有A和B两个Activity,由A打开B,并传递参数给B:

A Activity

//打开 B Activity
Intent intent = new Intent(A.this, B.class);//为Intent设置要激活的组件
/*intent.putExtra("name", "小九九");
intent.putExtra("age", 26);*/
Bundle bundle = new Bundle();
bundle.putString("name", "小九九");
bundle.putInt("age", 26);
intent.putExtras(bundle);

//写法一 intent.setClass(A.this, B.class);//设置要激活的组件
//写法二 intent.setComponent(new ComponentName(A.this, B.class));//设置要激活的组件
startActivity(intent);

B Activity 得到参数:

Intent intent = this.getIntent();//得到激活它的Intent
String name = intent.getStringExtra("name");
int age = intent.getExtras().getInt("age");//第二种写法

 

B 处理完后要返回结果给A 则不能使用startActivity(intent); 来启动B

而是startActivityForResult(intent, 100); 第二个参数为请求码。

同时A要重写onActivityResult 方法,该方法为系统自动调用。如:

A  Activity:

 

public void onCreate(Bundle savedInstanceState) {
	Intent intent = new Intent(A.this, B.class);//为Intent设置要激活的组件
	/*intent.putExtra("name", "小九九");
	intent.putExtra("age", 26);*/
	Bundle bundle = new Bundle();
	bundle.putString("name", "小九九");
	bundle.putInt("age", 26);
	intent.putExtras(bundle);
	startActivityForResult(intent, 100);//第二个参数为设置的请求码
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
	Toast.makeText(this, data.getStringExtra("result"), 1).show();//得到返回结果
	super.onActivityResult(requestCode, resultCode, data);
}

 B  Activity:

 

Intent intent = new Intent();
intent.putExtra("result", "这是处理结果");
setResult(20, intent);//设置返回数据
finish();//关闭activity

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics