Android中如何在Activity外部访问该Activity内定义的变量
报错原因
你直接import类路径调用变量的方式仅适用于静态类成员/全局常量,如果你的字符串是MainActivity中定义的普通实例成员变量,不属于类的公共静态属性,自然会提示找不到符号。
解决方案
根据变量的使用场景可选择以下方案:
- 场景1:字符串为固定不变的全局通用常量
不要将常量写在Activity类中,单独定义常量类存储:
其他位置调用时直接写// 新建全局常量类 public class AppConstants { public static final String TARGET_STRING = "固定的字符串内容"; }AppConstants.TARGET_STRING即可。 - 场景2:字符串是MainActivity运行时动态生成的,需要传给其他Activity
用Intent携带参数传递:
在目标Activity中取值:// MainActivity中启动其他Activity时写入参数 Intent intent = new Intent(MainActivity.this, TargetActivity.class); intent.putExtra("string_key", 你的字符串变量); startActivity(intent);String receivedStr = getIntent().getStringExtra("string_key"); if (receivedStr != null) { // 执行业务逻辑 } - 场景3:字符串需要传递给RecyclerView使用
将字符串作为Adapter的构造参数传入即可:
在MainActivity初始化Adapter时传入变量:// 自定义Adapter添加构造参数 public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> { private String inputStr; public MyAdapter(String inputStr) { this.inputStr = inputStr; } // 后续Adapter内部直接调用inputStr使用即可 }MyAdapter adapter = new MyAdapter(你的字符串变量); recyclerView.setAdapter(adapter); - 不推荐的兼容方案:如果一定要把变量定义在MainActivity中,可以将其声明为静态变量
其他位置直接调用// MainActivity中声明 public static String yourStr;MainActivity.yourStr即可,但是注意静态变量会持有Activity引用,容易引发内存泄漏,需要在Activity销毁时手动置空。
内容的提问来源于stack exchange,提问作者Dreamerwoodd
相关产品推荐
相关产品推荐

