android实现多个页面跳转页面传值,Android入门计划<五>---页面的创建和页面之间的跳转...

前言:不论是在哪一个app中都会有很多页面,比如某q、某x,从聊天列表可以进入聊天页面,这是两个完全不同的页面。这个东西在Android中叫做 Activity (活动)

一、Activity 三要素

在我们新建一个项目之后,AndroidStudio(后面简称AS)都会给我们创建好一个Activity(后面简称Act),那么这个页面就作为了App的启动页面。 下面来说一个Act组成的三要素。

1.1 布局文件 .xml

路径在app \ src \ main \ res \ layout

举个例子,系统给我们的创建的 acitvity_main.xml

7b869977ef9f

image.png

布局文件里就是我们需要展示的ui。

1.2 控制布局的java文件

以系统创建的为例:app \ src \ main \ java \ com \ example \ myapplication \ MainActivity.java

public class MainActivity extends AppCompatActivity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

}

}

1.我们发现它继承了 AppCompatActivity ,我们的要求是 继承于Activity。这个Activity的子类,所以满足要求。

2.还有他重写了onCreate方法,并且调用了一个 setContentView() 方法,这个方法是用来填充布局的,R:资源 layout属于资源, activity_main 就是对应的xml布局了

1.3 要在AndroidManifest中注册Activity

注意注册Act要在 application节点中间写

android:allowBackup="true"

android:icon="@mipmap/ic_launcher"

android:label="@string/app_name"

android:roundIcon="@mipmap/ic_launcher_round"

android:supportsRtl="true"

android:theme="@style/AppTheme">

//启动页

//过滤器

//意味着它是启动页,一个项目中只能有一个启动页

二、Activity的跳转与传值跳转

学会了act的组成,那我们需要从一个页面跳到另一个页面需要怎么做。

1、创建好目标页面

a、xml

xmlns:app="http://schemas.android.com/apk/res-auto"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:gravity="center"

android:layout_height="match_parent"

tools:context=".Main2Activity">

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:textSize="30sp"

android:text="我是页面2"/>

b、java文件 名字为:Main2Activity

public class Main2Activity extends AppCompatActivity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main2);

}

}

c、清单文件注册

2、写跳转方法

比如我们在Main要跳转到Main2

我们在Main写一个按钮,点击按钮然后跳转到 Main2

Button button = findViewById(R.id.btn_goto2);

button.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

//构建一个Intent对象 参数1:当前页面的上下文 参数2:目标Act.class

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

//跳转Act 参数:intent对象

startActivity(intent);

}

});

点击前:

7b869977ef9f

image.png

点击后:

7b869977ef9f

image.png

3、 页面传值跳转

如果我们现在有需求,要求页面Main->Main2 带参数或者带内容过去怎么办。

我们在Main的跳转里做手脚

//构建一个Intent对象 参数1:当前页面的上下文 参数2:目标Act.class

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

//intent.putExtra

intent.putExtra("content","我是页面1传来的值");

//跳转Act 参数:intent对象

startActivity(intent);

然后在Main2接收,并且让其显示在Main2的文本框上

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main2);

TextView textView = findViewById(R.id.tv_main2);

//获取intent信息

Intent intent = getIntent();

//获取intnet、传来的值

String content = intent.getStringExtra("content");

//设置在textview中

textView.setText(content);

}

看效果,点击前:

7b869977ef9f

image.png

点击后:

7b869977ef9f

image.png

有人可能会说,我不光想传String,还想有其他类型,当然Android都提供了,这里不做演示,把支持参数贴出来:

7b869977ef9f

image.png

当然有这么多类型,到了Main2 也就会有 intent.getXXX

4、页面跳转回传

假设,我们在Main跳转到Main2 ,当Main2做了某些操作,我们Main页面需要知道,那么就用到了跳转回传,这个需要两个页面配合,我们来演示一下。

Main中代码:

//构建一个Intent对象 参数1:当前页面的上下文 参数2:目标Act.class

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

//intent.putExtra

intent.putExtra("content","我是页面1传来的值");

//跳转回传

startActivityForResult(intent,100);

7b869977ef9f

image.png

我们在Main2中加一个按钮为:确认更新

然后点击按钮的时候关闭Mian2,让Main得到某些信息

Main2代码:

Button button = findViewById(R.id.btn_main2);

button.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

Intent intent = new Intent();

intent.putExtra("result","我更新完了");

setResult(200,intent);

finish();

}

});

我们完成了准备工作,这里要注意的一点是,在Main中还需要重写一个方法:onActivityResult

@Override

protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {

super.onActivityResult(requestCode, resultCode, data);

//一个请求码,一个响应码。 data是参数

if (requestCode==100&&resultCode==200){

//100是我们跳转的时候填的

//200是在Main2中填的

//这里我们直接把传过来的值,显示在按钮上

String result = data.getStringExtra("result");

button.setText(result);

}

}

}

来看演示

7b869977ef9f

r6f3t-4epl1.gif

ok

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值