Intent 的用法大致可以分为两种,显式Intent 和隐式Intent
第一种
Intent intent= new Intent(MainActivity.this,NextActiviity.class);
//分散传值
intent.putExtra("name","jack");
intent.putExtra("age",23);
intent.putExtra("address","北京");;
//封装传值
Bundle bundle = new Bundle();
bundle.putSting("code","1001")
intent.putExtra("bundle",bundle)
//启动Activity
startActiviy(intent);
NextActiviity中提取值
Intent intent = getIntent();
String name = intent.getStringExtra("name");
Int age =intent.getIntExtra("age",0);
String address =intent.getStringExtra("address");
Bundle bundle =intent.getBoundleExtra("bundle");
String code = bundle.getString("code");
第二种
intent intent = new Intent();
intent.setClass(MainActivity.this,NextActiviity.class);
第三种
在清单文件中添加
<activity android: name = ".NextActiviity">
<intent-filter>
<action android :name = "com.example.anddriod_activity_state.nextActivity">
</action>
<category android:name ="android.intent.category.DEFAULT"></category>
</intent-filter>
</activity>
Intent intent = new Intent("com.example.anddriod_activity_state.nextActivity");
startActiviy(intent);
第四种
Intent intent = new Intent();
intent.setAction("com.example.anddriod_activity_state.nextActivity");
startActiviy(intent);
第五种(使用ComponentName )
Intent intent = new Intent();
// ComponentName (组件名称)是用来打开其他应用程序中的Activity或服务的。
ComponentName cn = new ComponentName(MainActivity.this,NextActivity.class);
intent.setComponent(cn);
onActivityResult()方法带有三个参数,第一个参数requestCode,即我们在启动活动时传
入的请求码。第二个参数resultCode,即我们在返回数据时传入的处理结果。第三个参数data,
即携带着返回数据的Intent。由于在一个活动中有可能调用startActivityForResult()方法去启
动很多不同的活动,每一个活动返回的数据都会回调到onActivityResult()这个方法中,因此
我们首先要做的就是通过检查requestCode 的值来判断数据来源。确定数据是从
SecondActivity 返回的之后,我们再通过resultCode 的值来判断处理结果是否成功。最后从
data 中取值并打印出来,这样就完成了向上一个活动返回数据的工作。
{
回传值onActivityResult方法
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this,
NextActiivity.class);
String a = editText1.getText().toString().trim();
String b = editText2.getText().toString().trim();
intent.putExtra("message", a+"+"+b+"="+"?");
startActivityForResult(intent, 1000);// requestCode
// 请求码用于多窗口传值时,确定是那个窗口的回传值,整数类型
}
});
}
// 回传值用onActivityResult启动activity,并回传值
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
if(requestCode==1000&&resultCode==1001){
String result = data.getStringExtra("result");
editText3.setText(result);
}
}
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.next);
button = (Button) findViewById(R.id.button1);
edittext = (EditText) findViewById(R.id.editText1);
textview = (TextView)this.findViewById(R.id.textView1);
Intent intent = getIntent();
String message = intent.getStringExtra("message");
textview.setText(message);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String value = edittext.getText().toString().trim();
Intent intent = new Intent();
intent.putExtra("result", value);
//设置回传的意图p
setResult(1001, intent);
finish();//结束activity的生命周期
}
});
}
}
欢迎关注我Github : @ 我的github