先看看效果:点击button1
跳转视图
将创建好的项目中的
MainActivity类中写上:
package com.example.reactest;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
// 向下兼容的Activity 其中AppCompatActivity是Activity的子类 Activity是Android系统提供的一个活动基类
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button_Panel = (Button)findViewById(R.id.buttonPanel);
/*
* 右键com.example.reactest 然后New 选择Activity 再选Gallery
* 选择Empty Activity 输入 second_Activity 勾选 Generate layout File 再输入:second_layout 不要勾选 Launcher Activity 即可.
* 勾选和不勾选 Generate layout File 的区别: 编写出来的程序放置的位置不一样,一个是以“project folder”为根目录,另外一个是创建一个完全独立的文件夹。
* 说明一: Launcher 是系统启动后第一个启动的程序,是其他应用程序的入口,也是我们的手机程序的桌面程序。
*
* 说明二: 每次创建一个活动(Activity)都会在AndroidManifest.xml中注册一个活动.
* 打开AndroidManifest.xml可以看到里边有这句话: <activity android:name=".SecondActivity"></activity>
* 由于SecondActivity不是主活动,所以不用配置<intent-filter>
* 课前知识补充: Intent负责各个组件之间交互,指明当前组件想要执行的动作,可以在不同组件之间传递数据
* Intent:有显式和隐式两种 Intent有多个构造函数重载
* 知识巩固:同一范围中声明几个功能类似的同名函数,但是这些同名函数的形式参数(指参数的个数、类型或者顺序)必须不同,也就是说用同一个函数完成不同的功能。这就是重载函数。
*
* 构造函数一: Intent(Context packageContext,Class<?>cls); 参数一[Context要求提供一个启动活动的上下文] 第二个参数[Class指定想要启动的目标活动]
* 启动活动: startActivity() 传入写好的Intent内容即可
* */
button_Panel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
/*
* 传入MainActivity.this作为上下文,SecondActivity.class作为目标活动
* 我们的意图此刻非常明显了,就是通过MainActivity活动的基础上打开:SecondActivity活动
* 然后通过startActivity();执行intent
* 因为这个意图非常明显,所以我们称为:显式Intent
* */
Intent intent = new Intent(MainActivity.this,SecondActivity.class);
startActivity(intent);
}
});
}
}
第一个界面为:activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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">
<!-- 只要创建任何资源都会在R文件中生成一个资源id
在引用布局的时候会调用R.layout.(Activity)可以得到XXXX.xml布局中的id,然后将这个值传到setContentVies()方法即可-->
<!-- wrap_content 当前宽度只要刚好包含里边的内容就行-->
<!-- match_parent 当前元素和父元素一样宽 相配,相称 -->
<Button
android:id="@+id/buttonPanel"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="1"
tools:ignore="MissingConstraints" />
<!-- 通过button触发Toast 通过onCreate方法中添加代码-->
</androidx.constraintlayout.widget.ConstraintLayout>
第二个活动:secondActivity 创建之后什么都不用理会。
package com.example.reactest;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class SecondActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.second_layout);
}
}
给第二个活动视图添加一个button就行了,为了区分main视图,我将第二个视图加上了 内容:第二个视图 .
second_layout.xml 代码如下:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!--添加一个button orientation 方向 vertical垂直的 -->
<Button
android:id="@+id/buttonPanel_2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="第二个视图"
tools:ignore="MissingConstraints" />
</androidx.constraintlayout.widget.ConstraintLayout>