【Android】利用intent启动活动


一、显示Intent

显示Intent,只用在Activity文件中作出修改。

1.核心概念

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

其中,Intent的构造方法Intent(Context packageContext, Class<?> cls)的参数:

  • packageContext:启动活动的上下文。以.this结尾。
  • cls:要启动的活动。以.class结尾。

startActivity()启动intent跳转到Activity中。

2.例子

点击按钮跳转到另一个Activity。

public class MainActivity extends AppCompatActivity{

    private Button btn1;

    @Override
    protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        btn1= this.<Button>findViewById(R.id.btn1);
    }

    public void click(View v)
    {
        Toast.makeText(this,"新的界面",Toast.LENGTH_LONG).show();
        Intent intent = new Intent(MainActivity.this,MissionActivity.class);
        startActivity(intent);
    }
}

二、隐式Intent

隐式Intent关键在Manifest注册表中做出修改,以及在Activity中作出启动的操作。

1.简单使用

xml中

<activity android:name=".Main2Activity">
    <intent-filter>
        <action android:name="my action"></action>
        <category android:name="android.intent.category.DEFAULT"/>
    </intent-filter>
</activity>

Activity中

Intent intent = new Intent("my action");
startActivity(intent);

action和category的DEFAULT属性必须有,不然会报错。因为action和category两者共同确定是哪个Activity。

【为什么这个intent没有写category属性】
因为startAcitivity()自动将属性添加到intent中。

【action一般怎么写】
可以有空格,如:my action
一般是自己的包名+活动名,如:com.example.hello.Main2Activity

2.action

(1)Intent(action)

构造时Intent时设置action属性。

Intent(String action)

参数:
action是Manifest文件中Activity的intent-filter的action的name。

比如:

Intent intent = new Intent("my action");

(2)setAction()

intent()无参数构造,然后使用setAction()。

比如:

Intent intent = new Intent();
intent.setAction("my action");
startActivity(intent);

(3)启动系统自带的活动

【Android】利用intent拨打电话
【Android】利用intent启动浏览器

3.category

即使有自定义category,也必须有DEFAULT属性。去掉DEFAULT就出错。

<activity android:name=".Main2Activity">
	<intent-filter>
	    <action android:name="my action" />
	    <category android:name="x"/>
	    <category android:name="android.intent.category.DEFAULT"/>
	</intent-filter>
</activity>
Intent intent = new Intent("my action");
intent.addCategory("x");
startActivity(intent);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值