You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Studio中如何用Java的Intent实现多页面间数据传递

Android 全局共享用户名的实现方案

以下是三种常用实现方式,可根据业务场景选择:

方案一:自定义Application全局存储(适合临时全局共享,APP关闭后数据清除)

该方式无需持久化存储,运行时全局可访问,实现最简单:

  1. 新建自定义Application类
public class MyApp extends Application {
    // 全局可访问的用户名变量
    public static String userName = "";
}
  1. 在AndroidManifest.xml中注册自定义Application,找到<application>标签,添加android:name属性:
<application
    android:name=".MyApp"
    <!-- 其余原有配置保持不变 -->
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    ...>
  1. 在用户输入姓名的页面给全局变量赋值,修改你的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);
}
  1. 任意需要展示用户名的页面直接调用即可:
// 示例:在任意Activity的onCreate方法中使用
TextView nameView = findViewById(R.id.your_textview_id);
nameView.setText("欢迎你:" + MyApp.userName);

方案二:SharedPreferences持久化存储(适合需要保留用户信息到下次打开APP的场景)

如果希望用户杀掉APP重新打开后不需要重新输入姓名,可选择该方式:

  1. 在用户输入姓名的页面存储数据,修改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);
}
  1. 任意页面读取数据:
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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 17:36:03