无法在Android中将变量值从一个活动发送到另一个活动
Posted
技术标签:
【中文标题】无法在Android中将变量值从一个活动发送到另一个活动【英文标题】:Unable to send variable value from one activity to the other in Android 【发布时间】:2022-01-21 01:50:01 【问题描述】:我正在尝试将存储在变量 my_var
中的值从一个活动发送到 android 中的另一个活动。 SOV这里可能已经有很多类似的问题了,但我一直在自己尝试,到目前为止,还没有成功。对于我做错了什么,我将非常感谢您的帮助或提示?
我的(伪/示例)代码是这样的:
public class MyActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener
public String my_var;
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.my_layout);
My_method();
public void my_method()
// This is a method that makes HTTP GET request and parse response to my_var
my_var = responseObject1.getX() + " " + responseObject1.getY()
// Then, at the bottom of MyActivity, I am creating an Intent to pass my_var to another activity to show it in TextView.
// I took this method from here[.][1]
public void rsa_key(String s)
Intent intent = new Intent(getBaseContext(), AnotherClass.class);
intent.putExtra("my_var", my_var);
startActivity(intent);
然后,在另一个活动中(在OnCreate)
,我试图像这样得到my_var
:
// public String my_var in initialization
Intent intent = getIntent();
my_var = intent.getStringExtra("my_var");
应用程序编译,我没有收到任何错误,但在其他活动中将 my_var
值(XML 布局)放入 TextView.setText(my_var);
时,我看不到它。日志中也没有有用的提示。有人可以帮助我了解我做错了什么吗?或遗漏什么。
我也像这样尝试过SharedPreferences
,但没有运气!
在第一次活动中:
SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putString("varKey", my_var);
editor.commit();
第二次活动:
SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this);
my_var = sharedPref.getString("varKey", my_var);
非常感谢您提供解决此问题的帮助/建议。非常感谢!
【问题讨论】:
您确定您使用的是正确的上下文吗? 我还使用了this
和FirstActivity.this
。没用。上下文可能有什么问题?
public String my_var;
更改为 public String my_var="xxxxxcccc";
并重试。其余的看起来还可以。
当我调用rsa_key
方法时,页面跳转到另一个活动,这是不希望的。我只想在活动一运行时传递变量值(除非用户更改)。
@blackapps:试过但没有帮助。不确定,如果我应该调用rsa_key
,因为在第一页跳转到下一页(活动)。但是传递 my_var 不起作用。
【参考方案1】:
试试这个 putExtra 代码并在第二个活动中获取数据。
使用它来“放置”文件...
Intent i = new Intent(FirstScreen.this, SecondScreen.class);
i.putExtra("my_var", my_var);
startActivity(i);
然后,要检索该值,请尝试以下操作:
String newString;
if (savedInstanceState == null)
Bundle extras = getIntent().getExtras();
if(extras == null)
newString= null;
else
newString= extras.getString("my_var");
else
newString= (String) savedInstanceState.getSerializable("my_var");
【讨论】:
以上是关于无法在Android中将变量值从一个活动发送到另一个活动的主要内容,如果未能解决你的问题,请参考以下文章