gpt4 book ai didi

java - 通过 SharedPreference 传递 EditText 内容

转载 作者:行者123 更新时间:2023-12-02 12:16:04 25 4
gpt4 key购买 nike

在我的应用程序中,我有 2 个 Activity ,我想在 SettingsActivity 的 EditText 中键入 URL 地址并在 MainActivity 中使用它,但我不能...

这是我的设置 Activity :

 public class SettingsActivity extends Activity {

Switch aSwitch;
EditText editText;
String URL_ENDPOINT;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_settings);

editText = (EditText) findViewById(R.id.etEnd);
SharedPreferences sp = getSharedPreferences("edittext", Activity.MODE_PRIVATE);
SharedPreferences.Editor edt = sp.edit();
String URLValue = editText.getText().toString();
edt.putString("URL", URLValue);
edt.commit();
editText.setText(sp.getString("URL" , URLValue));
}

这是我的主要 Activity :

 public class MainActivity extends Activity {


String URL_Endpoint;



@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_monitoring);


//get URL for endpoint from SettingsActivity
SharedPreferences sp = getSharedPreferences("edittext", Activity.MODE_PRIVATE);
String URL = sp.getString("URL", "");
URL_Endpoint = URL;

最佳答案

首先,了解一下Android 的生命周期

enter image description here

现在,onCreate 方法在创建 Activity 时仅调用一次,如图所示。

因此,在 onCreate 方法中获取 editText 的文本将导致空文本(如果未预先填充)。

由于我认为您想要创建一个设置 Activity 来为 mainActivity 设置一些内容,因此您有两种方法可以实现您的目标:

  1. 您可以添加“保存”按钮。我会推荐这样做,因为用户可能会输入一些内容并改变主意,这样单击“后退”将取消操作。
  2. 您可以在 SettingsActivityonPause 处保存 editText 值。无论如何,每次用户退出 Activity 时,此方法都会覆盖该值。

注意:记得在onCreate/onResume中填充settingsActivity的文本,否则它总是空的。

还有一点是,正如您在图片中看到的那样,一旦您从设置 Activity 返回,onCreate 就不会再次调用。因此,您必须在 onResume 方法中从 SharedPreference 中获取值并将其放入 MainActivity 的 TextView 中。

首先,我建议您学习 lifeCycle,因为它确实是 Android 编程的核心信息。

关于java - 通过 SharedPreference 传递 EditText 内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46179821/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com