欢迎回来Android入门教程的第十一期,本期来学习如何创建新的Activity并实现跳转,那么下面就进入正题吧。

上期传送门:#10 Android入门教程 – RecyclerView(3) – LovelyCat的小站 (lovelycatv.cn)

下期传送门:#12 Android入门教程 – 使用Glide框架加载图片 – LovelyCat的小站 (lovelycatv.cn)

首先上主布局文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity"
    android:orientation="horizontal"
    android:padding="20dp">
    <Button
        android:id="@+id/main_btn_jump"
        android:layout_width="100dp"
        android:layout_height="40dp"
        android:text="Jump"/>
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="这里是MainActivity"
        android:textSize="16sp"
        android:textColor="#000"/>
</LinearLayout>

接下来创建一个Activity,这里我们用Android Studio自带的工具,可以省去不少麻烦。在你需要新建Activity的包单击右键,选择New Activity Gallery。

接着我们又回到了这个熟悉的界面,在第一期讲Android Studio的时候有介绍过它们,这里不再赘述了。传送门:#1 Android入门教程 – Android Studio详解 – LovelyCat的小站 (lovelycatv.cn)

那我们继续,选择Empty或其他Activity(随意),然后给它命个名,单击Finish完成。接着你会发现,layout文件夹中多出来了一个布局文件,那么这个就是你新建的Activity的布局。

进到新的布局文件里面,添加一个TextView以便区分。这里布局就不放出来了,自己了解就好。

回到主类(MainActivity),为按钮设置点击事件(不知道的看第五期:#5 Android入门教程 – 基本组件 – LovelyCat的小站),然后我们需要用到Intent。那么先来介绍一下Intent是什么,在Android中,提供了Intent用于协助应用内部之间的交互,它不仅可以用于内部,也可以用于应用见的交互与通信,那么本期就来介绍内部Intent的简单使用

Intent的类型有以下两种:

  • 显式Intent – 指明需要操作的Activity
  • 隐式Intent – 不指明某个Activity,让系统做出选择(常用于打开URL等活动)

这一期先介绍显式Intent的使用,那么要实现Activity跳转,创建Intent的方式有以下三种。

1.使用Intent的构造函数

Intent intent = new Intent(this, CratedActivity.class);

2.使用Intent的setComponent方法

ComponentName componentName = new ComponentName(this, CratedActivity.class);
Intent intent = new Intent();
intent.setComponent(componentName);

3.使用Intent的setClass方法

Intent intent = new Intent();
intent.setClass(this, CratedActivity.class);

最后,我们使用startActivity方法,传入上面创建好的Intent即可。那么下面贴出主类的所有代码:

public class MainActivity extends AppCompatActivity {
    private static MainActivity instance;

    public static MainActivity getInstance() {
        return instance;
    }
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        instance = this;
        
        findViewById(R.id.main_btn_jump).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent();
                intent.setClass(getInstance(), CratedActivity.class);
                startActivity(intent);
            }
        });
    }
}

来实机运行一下看看效果如何,单击JUMP按钮即可实现跳转:

好,那么Activity的跳转就到这里了,下面来学如何利用Intent在Activity间传递数据。我们需要用到Intent的putExtra方法,这个方法可以接受非常多类型的数据(包括Serializable类型):

这里我们用String来举例子吧,进入主类,在intent创建完成的下一行接着写:

intent.putExtra("data1","这里是来自MainActivity的数据");

那么putExtra方法中,第一个参数的数据的标识,这里我们可以把这两个参数当成是HashMap中的一组数据,key和value,传递过去之后,要在新的Activity接收它们,下面进到新的Activity中,我们可以直接用getIntent来获取传递过来的Intent,再通过这个Intent获取数据,那么有putExtra肯定就有getExtra咯,下面是全代码。

public class CratedActivity extends AppCompatActivity {

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

        Intent intent = getIntent();
        ((TextView) findViewById(R.id.acnew_tv)).setText(intent.getStringExtra("data1"));
    }
}

这样就完成了两个Activity间的数据传输,下面来实机运行一下试试:

本期学习了Intent的简单使用,也是一个经常要用到的东西,日后还会有更深入的学习,那么本期教程到此结束,感谢观看!


0 条评论

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注