Android模块开发-----用户信息模块(Fragment和Activity之间数据的传递)

在上一章节的《Android模块开发------SQLite数据库的使用(登录模块)》中,介绍了基本的登录模块,本节介绍一下用户模块的设计思路。
在登录成功,进入主界面后,通过ViewPager+Fragment的形式将Fragment添加到MainActivity,在用户UserFragment中,主要负责处理的就是显示当前用户的用户名,还有退出登录等简单的操作,后续有功能添加会在此更新。

(1)Activity和Activity之间数据的传递。
这种数据的传递方式,是开发过程中最常见的,通常会使用Intent、Bundle来进行数据的携带,然后跳转Activity。

Intent intent = new Intent();
//携带用户名信息到UserFragment显示
intent.putExtra("username",username);
intent.setClass(LoginActivity.this, MainActivity.class);
startActivity(intent);

使用Intent携带数据信息到MainActivity,在MainActivity中,通过下面的方式,可以得到传递的用户名信息。

String username = getIntent().getStringExtra("username");
Log.e("TAG","username=="+username);

(2)Activity和Fragment之间数据传递

在Activity中得到数据后,需要将数据传递到UserFragment中显示,第一种是直接在Fragment中获取Activity实例然后获取传递的Intent对象,如下

String username = getActivity().getIntent().getStringExtra("username");

通过getActivity得到与之绑定的Activity,可以得到传递的数据信息。

常用的第二种方式,就是采用Bundle的方式传递数据,下面是Activity中的代码

Bundle bundle = new Bundle();
bundle.putString("data",username);
userFragment.setArguments(bundle);

在Fragment端的接收

Bundle bundle = getArguments();
if(bundle != null) {
     data = bundle.getString("data");
}

看效果
在这里插入图片描述
(3)出现的问题
当我们第一次登录时,因为我们在登录端输入用户名,所以可以携带数据到达MainActivity,但是我们退出再登录,因为已经登陆过了,所以会跳过登录界面直接进入主界面,这个时候,用户界面的数据消失了。

因为在第二次登录的时候,没有进入登录界面,所以携带的数据为空,因为直接从欢迎界面进入到主界面,所以我们需要做的是,在第一次登录的时候,要把用户信息保存在本地,在第二次登录的时候,携带这个用户信息,跳转到MainActivity。

在第一次登录后,保存信息到本地

String username = getActivity().getIntent().getStringExtra("username");
//保存当前的用户信息到本地
SPUtils.getInstance().saveState("username",username);

然后第二次登录时,就将数据取出,使用Intent携带信息到MainActivity。

//获取当前登录用户的信息
String username = SPUtils.getInstance().getState("username", (String) null);
Intent intent = new Intent();
intent.putExtra("username",username);
intent.setClass(SplashActivity.this, MainActivity.class);
startActivity(intent);

如此用户模块就先做这些功能,后续继续更新。

发布了15 篇原创文章 · 获赞 5 · 访问量 633

猜你喜欢

转载自blog.csdn.net/qq_33235287/article/details/104149249