在我的应用程序中,我有2个活动,我想在SettingsActivity的EditText中键入一个URL地址,并在MainActivity中使用它,但是我不能...
这是我的SettingsActivity:
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));
}
这是我的MainActivity:
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的生命周期
这样,创建活动后,只需调用一次onCreate
方法,如图所示。
因此,在editText
方法中获取onCreate
的文本将导致文本为空(如果未预先填充)。
由于我认为您想创建一个设置活动来为mainActivity
设置一些内容,因此有两种方法可以实现您的目标:
您可以添加“保存” button
。由于用户可能会输入一些内容并改变主意,因此我建议这样做,并且单击“返回”将取消该操作。
您可以将editText
值保存在onPause
的SettingsActivity
处。无论用户何时退出活动,此方法都会覆盖该值。
注意:请记住在settingsActivity
中填充onCreate/onResume
的文本,否则该文本将始终为空。
还有一点是,始终如您在图片中所见,一旦您从设置中回来,就不会再次调用活动onCreate
。因此,您必须在onResume
方法中从SharedPreference
中获取值并将其放入您的MainActivity's
文本视图中。
首先,我建议您研究lifeCycle
,因为它确实是Android编程的核心信息。
关于java - 通过SharedPreference传递EditText内容,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46179821/