目录
1.闪屏的实现以及intent数据的传送与回调
每当我们打开一个app时,都会显示一张图片,然后延迟一段时间再进入app中,那么我们该怎么样实现这个方法呢
1.1 xml文件的编辑
首先让我们先创建一个空的activity
然后编辑xml文件
接下来将启动activity改为你的闪屏activity
android:exported="true">
这个为true的activity的文件将作为打开app的启动项
1.2 代码的编写
首先打开我们的activity创建一个handler
请注意这里有两个选择项,一个时android的,一个是Java里的,这里我们选择android的
我们使用handler.posDelayed()的方法,我们该如何填写呢,首先写一个内部类,打出new以后,as的编辑器中的题词器就会帮我们自动补齐,第二个参数是延迟时间,我们这里可以将其填写为1000ms,也就是1s中
接下来我们要使用intent进行页面的切换
Intent intent =new Intent(SplashActivity.this,MainActivity.class);
context填参数大部分可以填this
接下来我们使用startactivity来运行这个页面切换的intent
startActivity(intent);
1.3 intent的传值
intent不止可以进行页面的转换,我们还可以使用intent来进行值的传递
首先我们创建一个用户表
然后创建用户的基本数据
接下来我们使用快捷键alt+insert
选择第一个constructor就可以简单的实现函数的构造了
这里教大家一个如何快捷选择的方法,按住ctrl键然后就可以将其多选添加,这样就不用一个个添加了
package com.example.work;
public class UserInfo {
private String mname;
private String msex;
private int mage;
public UserInfo(String mname, String msex, int mage) {
this.mname = mname;
this.msex = msex;
this.mage = mage;
}
}
接下来我们创建一个对象,再利用intent.putExtra()进行传值但是我们发现代码标红了
这是因为我们还没有序列化,我们打开Userinfo进行修改
加入这段代码以后,我们就发现错误消失了
既然有传输数据,那么一定就有接受数据,那么我们该如何接受数据呢
Intent intent =getIntent();
我们可以使用getintent()的方法来接受intent,同时我们要保持编码的好习惯,一定要保证代码的安全性,要判断接受的intent是否为空值,有时候一个空值就会导致程序的崩溃,并且十分不容易被发现,浪费大量的时间去寻找错误。
if(intent!=null)
{
}
我们使用一个判断的函数,并在其中进行数据的接收
UserInfo userInfo=(UserInfo) intent.getSerializableExtra("UserInfo");
我们传的是一个序列化的内容,接受的也一定是序列化的内容,通过这个方式就可以接受到序列化的内容
既然收到了数据我们就让他在页面上显示出来吧
private TextView title_textview;
title_textview=findViewById(R.id.title_textView);
首先我们先声明一个textview再将其与title_textview进行绑定
那么我们该怎么样使用序列化的数据呢
首先我们回到Userinfo,使用快捷键alt+insert,这次我们使用get
同样按住ctrl进行多选
这样就帮我们自动生成了读取数据的函数了
if(intent!=null)
{
UserInfo userInfo=(UserInfo) intent.getSerializableExtra("UserInfo");
title_textview=findViewById(R.id.title_textView);
title_textview.setText("欢迎"+userInfo.getMname()+"进入app");
}
1.4 数据的回传
中国有句古话,来而不还非礼也,那么我们该如何接受到回调数据呢
我们可以使用startActivityForResult的方法,我们可以看到有两个参数,一个是intent,另一个是requestcode
startActivityForResult(intent,888);
我们将其填写完毕以后,进入Mainactivity进行数据的接收
我这里使用的是fragment,可能和activity的方式接受不同,如果在mainactivity中直接接受的话会造成应用的闪退
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_weixin_, null);
Button btn = view.findViewById(R.id.fanhui_button);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
getActivity().setResult(666);
getActivity().finish();
}
});
return view;
}
这里是在fragment中绑定按钮的方式,参考了在Fragment中添加按钮
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Toast.makeText(this,requestCode+" "+resultCode, Toast.LENGTH_LONG).show();
}
我们在onactivity中添加toast进行验证数据是否回调及准确
可以发现准确接受到回调的值,实验成功