Intent传递方式

来源:互联网 发布:几经褪色的记录 知乎 编辑:程序博客网 时间:2024/06/05 17:33
 

Intent在应用中起着实现调用者与被调用者之间传递的作用,有两种方法实现这种传递:显示匹配和隐式匹配

1.显示匹配:
   Button button = (Button)findViewById(R.id.testexplicit_button_one);
   button.setOnClickListener(new OnClickListener() {
   
   @Override
   public void onClick(View v) {
    // TODO Auto-generated method stub
    Intent intent = new Intent(TestOneActivity.this, TestTwoActivity.class);
    startActivity(intent);
   }
  });
Intent里面的参数为TestTwoActivity.class,是固定的Activity,利用startActivity可以直接跳转到TestTwoActivity中。

2.隐式匹配:
在TestExplicit工程的配置文件的TestOneActivity中加入:
            <intent-filter>
                <action android:name="com.js.TestOneActivity" />

                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
再新建一个工程:TestImplicit
    Button button = (Button)findViewById(R.id.testimplicit_button);
    button.setOnClickListener(new OnClickListener() {
   
   @Override
   public void onClick(View v) {
    // TODO Auto-generated method stub
    try{
    Intent intent = new Intent("com.js.TestOneActivity");
    startActivity(intent);}
    catch (ActivityNotFoundException e) {
     // TODO: handle exception
     Toast.makeText(TestImplicitActivity.this,
       R.string.no_activity, 1000).show();
    }
   }
  });
其中intent的参数要与在TestExplicit的配置文件中的action的name一致:com.js.TestOneActivity。否则会弹出Toast中的内容。
除了配置action中的内容,还可以配置category,data/type,component中的内容,然后在intent中设置他们的值,使其能够达到完全匹配。如果有多个内容匹配,那么会弹出一个对话框,让你选择其中的执行软件。

 

 

 

可以到我的资源中下载源码http://download.csdn.net/detail/jiangshan0521/4126739