安卓学习笔记 隐式跳转

目录

显式跳转

多用在APP内部跳转使用

 mBtn1.setOnClickListener(new OnClickListener() {
       @Override
       public void onClick(View v) {
             Intent inten=new Intent(MainActivity.this,Main2Activity.class);
             startActivity(intent);
            }
        });

隐式跳转 (主要使用)

多用在跨APP间
实现的效果:-MainActivity跳转到Main2Activity
类似于常见的跳转效果,但是这里使用到隐式跳转知识

1.MainActivity

1.主MainActivity中的一个Button按钮,注意,传入的参数不是MainActivity.this和Main2Activity,而是我们自定义的一个参数(也就是这个参数可以随便定义,但是这个自定义是基于Main2Activity的基础上,也就是说,这个参数必须对应我们所要跳转的ActivityManifest.xml的属性)

Button btn= (Button) findViewById(R.id.btn);

btn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {

        //这里的参数自定义的为:com.example
        Intent intent=new Intent("com.example");

        startActivity(intent);
    }
});

2.Main2Activity

Main2Activity的Activity代码块-两个按钮一个图片

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <Button
        android:id="@+id/button11"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="自己的跳转" />


    <ImageView
        android:id="@+id/image1"
        android:layout_width="200dp"
        android:layout_height="200dp" />

    <Button
        android:id="@+id/button22"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="跳转到相机页面" />

</LinearLayout>

3.在Manifest.xml中注册使用

Manifest.xml
只需要注意一下Main2Activity中的代码即可,不需要更改MainActivity代码

这里的和MainActivity一样都有intent-filter标签

<activity android:name=".Main2Activity">
    <intent-filter>
         //和我们MainActivity中Intent的参数相对应 
        <action android:name="com.example"/>
             //默认的类别,属性(可以不添加) 
        <category android:name="android.intent.category.DEFAULT"/>
    </intent-filter>
</activity>

隐式跳转使用案例

安卓原生相机拍照后返回到原界面

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.myactivity_layout);
    mBtn2 = (Button) findViewById(R.id.button22);
    mBtn2.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // 使用隐式跳转,跨App跳转
            Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
            startActivityForResult(intent, CAPTURE);
        }
    });

    imageView = (ImageView) findViewById(R.id.image1);
}

构造方法

// 此页面发起请求的页面完成返回时此页面的回调
// 参数一:请求码
// 参数二:结果码
// 参数三:如果上个页面有数据,可以在第三个参数中取出
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    Log.d("MainActivity", "requestCode-->" + requestCode + ",resultCode-->" + resultCode);

    if (requestCode == CAPTURE) {
        // 从拍照页面返回而来
        if (resultCode == RESULT_OK) {
            // 用户成功拍照,可以用过返回的Intent取出响应的数据
            Bitmap bitmap = (Bitmap) data.getExtras().get("data");
            Log.d("MainActivity", "Bitmap:" + bitmap);
            //设置图片显示控件的图片内容
            imageView.setImageBitmap(bitmap);
        } else {
            Toast.makeText(this, "拍照失败或没有没有拍照!", Toast.LENGTH_LONG).show();
        }

    }
}

结果显示

这里写图片描述

两种方式总结:

以上述MainActivity,Main2Activity为例,如果要实现MainActivity跳转到Main2Activity
简单用隐式跳转和显示跳转进行一个对比:

对比差异:显示跳转指定了我们的始发地MainActivity,目的地Main2Activity,相对更加直白

隐式跳转并没有明确指出我们跳转到哪里,具体跳转到哪个Activity,需要我们对比Manifest.xml中的action,category参数才能确定
相对更加隐蔽

猜你喜欢

转载自blog.csdn.net/lewyu521/article/details/80831137