无法在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);

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

【问题讨论】:

您确定您使用的是正确的上下文吗? 我还使用了thisFirstActivity.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中将变量值从一个活动发送到另一个活动的主要内容,如果未能解决你的问题,请参考以下文章

如何在android中将图像从一个活动发送到另一个活动

如何在android中将图像从一个活动发送到另一个活动?

在Android中将一个对象从一个活动传递到另一个活动

如何在android studio中将堆栈从一个活动传递到另一个活动

Angular 5 服务变量值更新

在 iOS 中将推送通知从一台设备发送到另一台设备