intent 显式意图和隐式意图

Android中鼓励在程序的设计中尽量减少组件的耦合,因此Android中提供了一系列减少耦合的做法,表层我们熟悉的比如xml的布局文件和Activity分离,除此之外,还有一个重要的内容就是intent。它就好比是各个组件中互相通讯的纽带,在四大组件中除了内容提供之外,其他的三大组件都可以通过intent来通讯。除此之外,intent还有启动其他组件的作用。比如启动Activity,服务,绑定服务,通过intent还可以在广播之间传递数据。

对于intent主要的分类主要包括隐式意图和显式意图。显式意图通常主要是启动本应用中的Activity之间的数据,而隐式意图则常见于启动系统中的某些特定的动作,比如打电话,或者是跨应用的Activity启动。

一般:

显式意图:调用Intent.setComponent()或Intent.setClass()方法明确指定了组件名的Intent为显式意图,显式意图明确指定了Intent应该传递给哪个组件。

隐式意图:没有明确指定组件名的Intent为隐式意图。 Android系统会根据隐式意图中设置的动作(action)、类别(category)、数据(URI和数据类型)找到最合适的组件来处理这个意图。

    public class MainActivity extends Activity   
    {  
        /** Called when the activity is first created. */  
        @Override       
        public void onCreate(Bundle savedInstanceState)   
        {  
            super.onCreate(savedInstanceState);  
            setContentView(R.layout.main);  
              
            Button button = (Button) this.findViewById(R.id.button);  
            button.setOnClickListener(new View.OnClickListener()   
            {  
                @Override  
                public void onClick(View v)   
                {  
                    Intent intent = new Intent();  
                    intent.setAction("com.hoo.kay");  
                    //设置数据URI与数据类型匹配  
                    //intent.setData(data);  
                    //intent.setType(type);注意这个方法会清除setData的内容,所以如果既要设置类型与数据,那么使用setDataAndType  
                    intent.setDataAndType(Uri.parse("hoo://www.hoo.com/person"), "image/gif");  
                    startActivity(intent);  
                }  
            });  
        }  
    }  
    <application android:icon="@drawable/icon" android:label="@string/app_name">  
            <activity android:name=".MainActivity"  
                      android:label="@string/app_name">  
                <intent-filter>  
                    <action android:name="android.intent.action.MAIN" />  
                    <category android:name="android.intent.category.LAUNCHER" />  
                </intent-filter>  
            </activity>  
            <activity android:name=".OtherActivity"  android:label="@string/app_name">  
                <intent-filter>  
                    <action android:name="com.hoo.kay" />  
                    <action android:name="com.hoo.kesen" />  
                    <category android:name="android.intent.category.DEFAULT" />  
                    <category android:name="com.hoo.category.li" />  
                    <data android:scheme="hoo" android:host="www.hoo.com" android:path="/person"/>  
                    <data android:mimeType="image/gif"/>  
                </intent-filter>  
            </activity>  
        </application>  



  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在 Android 中,要使用显式意图(Explicit Intent)进行 Activity 跳转,需要以下步骤: 1. 创建一个 Intent 对象:`Intent intent = new Intent(this, TargetActivity.class);` 其中,第一个参数指当前 Activity 的上下文,第二个参数指目标 Activity 的类名。 2. 可以通过 `putExtra()` 方法向目标 Activity 传递数据: ```java intent.putExtra("key", value); ``` 其中,`key` 是传递数据的键名,`value` 是传递数据的值。 3. 调用 `startActivity()` 方法启动目标 Activity: ```java startActivity(intent); ``` 完整的示例代码如下: ```java // 当前 Activity public class MainActivity extends AppCompatActivity { // 点击按钮跳转到目标 Activity public void gotoTargetActivity(View view) { // 创建 Intent 对象 Intent intent = new Intent(this, TargetActivity.class); // 传递数据 String data = "Hello, World!"; intent.putExtra("data", data); // 启动目标 Activity startActivity(intent); } } // 目标 Activity public class TargetActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_target); // 接收传递的数据 String data = getIntent().getStringExtra("data"); Log.d("TargetActivity", data); } } ``` 在上面的示例中,点击按钮后会跳转到目标 Activity,并且会在控制台输出传递的数据。 ### 回答2: 在Android开发中,Activity之间的跳转可以使用显式意图实现。 显式意图是指明目标Activity的跳转方式。首先需要创建一个Intent对象,指定当前Activity和目标Activity的类名。然后通过调用startActivity()方法来启动目标Activity。 具体步骤如下: 1. 创建Intent对象: Intent intent = new Intent(CurrentActivity.this, TargetActivity.class); 2. 设置传递数据(可选): 如果需要传递数据到目标Activity,可以使用intent.putExtra()方法将数据以键值对的形式存储在Intent对象中。例如: intent.putExtra("key", value); 3. 启动目标Activity: 调用startActivity()方法,将Intent对象作为参数传递进去,即可启动目标Activity: startActivity(intent); 以上就是使用显式意图实现Activity跳转的基本步骤了。 需要注意的是,跳转前需在AndroidManifest.xml文件中注册目标Activity,否则将无法正常跳转。在<application>标签内,使用<activity>标签进行注册,指定目标Activity的类名。 例如: <activity android:name=".TargetActivity" android:label="Target Activity" /> 通过显式意图,我们可以方便地在不同的Activity之间进行跳转,并且可以传递数据,实现更加丰富和灵活的应用程序交互体验。当然,除了显式意图,还有隐式意图等其他方式可以实现Activity之间的跳转。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值