Android Studio中如何用Java的Intent实现多页面间数据传递
Android 全局共享用户名的实现方案
以下是三种常用实现方式,可根据业务场景选择:
方案一:自定义Application全局存储(适合临时全局共享,APP关闭后数据清除)
该方式无需持久化存储,运行时全局可访问,实现最简单:
- 新建自定义Application类
public class MyApp extends Application { // 全局可访问的用户名变量 public static String userName = ""; }
- 在
AndroidManifest.xml中注册自定义Application,找到<application>标签,添加android:name属性:
<application android:name=".MyApp" <!-- 其余原有配置保持不变 --> android:allowBackup="true" android:icon="@mipmap/ic_launcher" ...>
- 在用户输入姓名的页面给全局变量赋值,修改你的
feedback类代码:
public void thanks_Click(View view) { EditText nmeText = findViewById(R.id.txtNme); String nme = nmeText.getText().toString(); // 给全局变量赋值,之后所有页面都可以直接取 MyApp.userName = nme; Intent newPage = new Intent(this, thanksActivity.class); newPage.putExtra("USERNAME", nme); startActivity(newPage); }
- 任意需要展示用户名的页面直接调用即可:
// 示例:在任意Activity的onCreate方法中使用 TextView nameView = findViewById(R.id.your_textview_id); nameView.setText("欢迎你:" + MyApp.userName);
方案二:SharedPreferences持久化存储(适合需要保留用户信息到下次打开APP的场景)
如果希望用户杀掉APP重新打开后不需要重新输入姓名,可选择该方式:
- 在用户输入姓名的页面存储数据,修改
feedback类代码:
public void thanks_Click(View view) { EditText nmeText = findViewById(R.id.txtNme); String nme = nmeText.getText().toString(); // 存储到本地SharedPreferences SharedPreferences sp = getSharedPreferences("app_config", MODE_PRIVATE); sp.edit().putString("USERNAME", nme).apply(); Intent newPage = new Intent(this, thanksActivity.class); startActivity(newPage); }
- 任意页面读取数据:
SharedPreferences sp = getSharedPreferences("app_config", MODE_PRIVATE); // 第二个参数是默认值,没读到的时候返回该内容 String userName = sp.getString("USERNAME", "访客"); // 直接使用即可 TextView thanks = findViewById(R.id.idThanks); thanks.setText("Thanks for the Quiz idea " + userName);
方案三:每次跳转Intent携带参数(适合页面层级较少的场景)
如果不想改全局配置,也不需要持久化,只需要在现有跳转逻辑上扩展即可:
每次跳转新Activity时,将当前页面拿到的用户名再通过putExtra传递给下一个页面即可,示例:
// 在thanksActivity中跳转到第三个页面的代码 String userName = getIntent().getStringExtra("USERNAME"); Intent intent = new Intent(this, ThirdActivity.class); intent.putExtra("USERNAME", userName); startActivity(intent);
后续所有页面都复用你现有的接收逻辑读取即可,缺点是页面层级多的时候每次跳转都要传参,比较繁琐。
内容的提问来源于stack exchange,提问作者BananaSweden
相关产品推荐
相关产品推荐

