寒假安卓app开发学习记录(7)

    今天学习了Intent的基本用法。Intent是什么?Intent在Android中的核心作用就是“跳转”(Android中的跳转机制),同时可以携带必要的信息,将Intent作为一个信息桥梁。最常用的莫过于从一个activity跳转到另一个activity,然后返回到上一个activity。还可以在不同组件间进行数据传递。

    Intent可分为两种,显示Intent和隐式Intent。

   显式Intent定义对于明确指出了目标组件名称的Intent,我们称之为显式Intent。 即在通过Intent启动Activity时,需明确指定激活组件的名称。如果需要在本应用中启动其他的Activity时,可以使用显式意图来启动Activity。

    
    Intent intent = new Intent(this, Main2Activity.class);
 
    startActivity(intent);

          I
 显式意图还可以根据目标组件的包名、全路径名来指定开启组

    Intent intent = new Intent();
    intent.setClassName("com.android.deskclock","com.android.deskclock.DeskClock");
 
    startActivity(intent);

   隐式Intent定义对于没有明确指出目标组件名称的Intent,则称之为隐式Intent。系统会根据隐式意图中设置的动作(action)、类别(category)、数据(Uri和数据类型)找到最合适的组件。

   <activity android:name="com.itcast.intent.Activity02">
       <intent-filter>
           <action android:name="cn.itscast.xxx"/>
           <category android:name="android.intent.category.DEFAULT"/>
       </intent-filter>
   </activity>


使用隐式意图开启Activity的示例代码如下所示:

Intent intent = new Intent();
// 设置动作和清单文件一样
   intent.setAction("cn.itscast.xxx");
   startActivity(intent);

显式intent例子:

package com.nyl.intenttest;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends Activity implements View.OnClickListener {

    private Button btnHome;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btnHome = (Button) findViewById(R.id.btnHome);
        btnHome.setOnClickListener(this);
    }

    @Override
    public void onClick(View view) {
        switch (view.getId()){
            case R.id.btnHome:
                Intent it = new Intent();
                it.setAction(Intent.ACTION_MAIN);
                it.addCategory(Intent.CATEGORY_HOME);
                startActivity(it);
                break;
        }
    }
}

隐式intent例子:

package com.nyl.intenttest;

import android.app.Activity;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity2 extends Activity implements View.OnClickListener {

    private Button btnTwo;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        btnTwo = (Button) findViewById(R.id.btnTwo);
        btnTwo.setOnClickListener(this);
    }

    @Override
    public void onClick(View view) {
        switch (view.getId()) {
            case R.id.btnTwo:
                Intent it = new Intent();
                it.setAction(Intent.ACTION_VIEW);
                startActivity(it);
                break;
        }
    }
}
<activity android:name=".MainActivity2"
            android:label="Activity2">
            <intent-filter>
                <action android:name="android.intent.action.VIEW"/>
                <category android:name="android.intent.category.DEFAULT"/>
            </intent-filter>
        </activity>

 

原文地址:https://www.cnblogs.com/wendi/p/12299080.html