多语言展示
当前在线:205今日阅读:91今日分享:37

android intent

android intent负责程序跳转和传递数据。如果把Activity比作积木的话,那么Intent就是胶水。也就是把不同的继母粘连起来。或者说Activity是不同的手机屏幕,而intent就是把不同的手机屏幕粘连起来的胶水。 另外,学习android intent,还要了解android activity知识,请参阅相关文档。 下图是“2Intent应用举例”图示。
步骤/方法
1

Intent用法1.1启动一个特定的ActivityIntent intent=new Intent(CurrentActivity.this,OtherActivity.class);startActivity(intent);1.2启动一个未指明的ActivityIntent inter=new Intent(Intent.ACTION_DIAL,Uri.parse(“tel:115-1345”));startActivity(intent);1.3处理一个Activity的返回值Public void onCreate(Bundle saveInstanceState){super.onCreate(savedInstanceState);listener1=new OnClickListener(){public void onClick(View v){Intent intent1=new Intent(ActivityMain.this,Activity1.class);Intent1.putExtra(“activityMain”,”数据来自activityMain”);startActivityForResult(intent1,REQUEST_CODE);}};Listener2=new OnClickListener(){public void onClick(View v){setTitle(“这是在ActivityMain”);Intent intent2=new Intent(ActivityMain.this,Activity2.class);startActivity(intent2);}};setContentView(R.layout.main);button1=(Button)findViewById(R.id.button1);button1.setOnClickListener(listener1);button2=(Button)findViewById(R.id.button2);button2.setOnClickListener(listener2);setTitle(“ActivityMain”);}@OverrideProtected void onActivityResult(int requestCode,int resultCode,Intent data){If(requestCode==REQUEST_CODE){If(resultCode==RESULT_CANCELED)setTitle(“取消”);else if(resultCode==RESULT_OK){String temp=null;Bundle extras=data.getExtras();If(extras!=null){Temp=extras.getString(“store”);}setTitle(temp);}}}

2

Intent应用举例Activity01.javapublic class Activity01 extends Activity{public void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);/* 设置显示main.xml布局 */setContentView(R.layout.main);/* findViewById(R.id.button1)取得布局main.xml中的button1 */Button button = (Button) findViewById(R.id.button1);/* 监听button的事件信息 */button.setOnClickListener(new Button.OnClickListener() {public void onClick(View v){/* 新建一个Intent对象 */Intent intent = new Intent();/* 指定intent要启动的类 */intent.setClass(Activity01.this, Activity02.class);/* 启动一个新的Activity */startActivity(intent);/* 关闭当前的Activity */Activity01.this.finish();}});}}Activity02.javapublic class Activity02 extends Activity{public void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);/* 设置显示main2.xml布局 */setContentView(R.layout.main2);/* findViewById(R.id.button2)取得布局main.xml中的button2 */Button button = (Button) findViewById(R.id.button2);/* 监听button的事件信息 */button.setOnClickListener(new Button.OnClickListener() {public void onClick(View v){/* 新建一个Intent对象 */Intent intent = new Intent();/* 指定intent要启动的类 */intent.setClass(Activity02.this, Activity01.class);/* 启动一个新的Activity */startActivity(intent);/* 关闭当前的Activity */Activity02.this.finish();}});}}

3

Android系统自带的Action介绍3.1ACTION_MAINAndroid.intent.action.MAIN,在每个AndroidManifest.xml问洞中都能看到,标记当前的Activity作为一个程序的入口。3.2ACTION_VIEW将数据显示给用户3.3ACTION_DIAL用于描述给用户打电话的动作3.4ACTION_PICK从特定的一组数据中进行选择数据操作3.5ACTION_DEIT编辑特定的数据3.6ACTION_DELETE删除特定的数据

4

与动作Action相关联的数据Data介绍VIEW_ACTION content://contacts/1显示标示符为1的联系人的详细信息EDIT_ACTION content://contacts/1编辑标示符为1的联系人的详细信息VIEW_ACTION content://contacts/显示所有联系人列表PICK_ACTION content://contacts/显示所有联系人的列表,并且允许用户在列表中选择一个联系人,然后把这个联系人返回给父Activity

5

Intent中其他属性介绍类别category:它为执行动作的附加信息数据类型type:显式指定Intent的目标组件的类名称。组件component:指定Intent的目标组件的类名称附加信息extras:是其他所有附加信息的集合

6

Android解析Intent实现6.1直接Intent:指定了component属性的Intent或者setClass6.2间接Intent:没有指定comonent属性的Intent。6.3如果Intent指明了action,则目标组件的IntentFilter的action列表中就必须包含有这个action,否则不匹配6.4如果Intent没有提供type,系统将从data中得到数据类型6.5如果Intent中的数据不是具体内容而是URI形式的话,则将根据Intent中数据的scheme进行匹配6.6如果Intent指定了一个或多个category,这些类别必须全部出现在组件的类别列表中。

注意事项

学习android intent,还要了解android activity知识,请参阅相关文档。

推荐信息