Intent 意为:意图。简单的理解就是用来从一个 Activity/Service 跳转到另一个 Activity/Service 中,并可以携带数据,也可以在这个程序调用别的程序。这样我们虽然不懂如何结息条形码,却可以通过开放的 android 平台,在我们的程序调用专家写好的程序来实现功能。
Intent 的用法:
(1)从 MainActivity 跳转到 NewActivity
Intent intent=new Intent(MainActivity,this,NewActivity.this);
startAcitivity(intent);
(2)从 MainActivity 跳转到 NewActivity,并携带数据
有两种写法,本质上并无很大区别
Intent intent=new Intent(MainActivity,this,NewActivity.this);
Bundle bundle=new Bundle();
bundle.putString("name", "value");
intent.putExtras(bundle);
startAcitivity(intent);
接收
mintent=this.getIntent();
bundle=mintent.getExtras();
String a=bundle.getString("name");
Intent intent=new Intent(MainActivity,this,NewActivity.this);
intent.putExtra("name","value");
startAcitivity(intent);
接收
String a=mintent.getStringExtra("name");
第一种方法当 bundle 的值要传给多个 activity 时较为简便。
(3)从 MainActivity 跳转到 NewActivity,并携带数据,并且要从 NewActivity 跳转回 MainActivity 且携带数据。
Intent intent=new Intent(MainActivity.this,NewActivity.class);
Bundle bundle=new Bundle();
bundle.putString("name","value");
intent.putExtras(bundle);
startActivityForResult(intent,1234);
protected void onActivityResult(int requestCode,int resultCode,Intent data)
{
if (resultCode==4321)
{
String a=data.getStringExtra("name");
Toast.makeText(this, a, Toast.LENGTH_LONG).show();;
}
super.onActivityResult(requestCode, resultCode, data);
}
//请求码 requestCode=1234
mintent.putExtra("name", "你好");
setResult(4321, mintent);
finish();
//结果码 result=4321
//程序例子 A 调用程序例子 B
intent.setClassName("com.example.lizib", "com.example.lizib.MainActivity");
Bundle bundle=new Bundle();
bundle.putString("STR_INPUT", "HI,我来自例子 A...");
intent.putExtras(bundle);
startActivityForResult(intent, 1234);
protected void onActivityResult(int requestCode,int resultCode,Intent data)
{
if (resultCode!=RESULT_OK)
{
return;
}
else
{
String aaa=data.getStringExtra("STR_BACK");
tv.setText("来自例子 B:"+aaa);
}
super.onActivityResult(requestCode, resultCode, data);
}
//接收
Bundle bundle=getIntent().getExtras();
strRet=bundle.getString("STR_INPUT");
//返回
Bundle bundle=new Bundle();
bundle.putString("STR_BACK", "我是例子 B");
Intent intent=new Intent();
intent.putExtras(bundle);
setResult(RESULT_OK,intent);
finish();
另外推荐一款我常用第三方 APP 测试工具:http://www.ineice.com/
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于