【问题标题】:Unable to send variable value from one activity to the other in Android无法在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);

非常感谢您提供解决此问题的帮助/建议。非常感谢!

【问题讨论】:

  • 您确定您使用的是正确的上下文吗?
  • 我还使用了thisFirstActivity.this。没用。上下文可能有什么问题?
  • public String my_var; 更改为 public String my_var="xxxxxcccc"; 并重试。其余的看起来还可以。
  • 当我调用rsa_key 方法时,页面跳转到另一个活动,这是不希望的。我只想在活动一运行时传递变量值(除非用户更改)。
  • @blackapps:试过但没有帮助。不确定,如果我应该调用rsa_key,因为在第一页跳转到下一页(活动)。但是传递 my_var 不起作用。

标签: java android


【解决方案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");
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-15
    • 2012-08-04
    • 1970-01-01
    • 2014-09-09
    • 1970-01-01
    • 1970-01-01
    • 2014-09-06
    • 2016-11-04
    相关资源
    最近更新 更多