在我的应用程序中我有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;
答案 0 :(得分:1)
首先,看看 Android的生命周期
现在,那就是说,onCreate
方法只是在创建活动时调用一次,如图所示。
因此,在editText
方法中获取onCreate
的文字会产生空文本(如果没有预先填充)。
由于我认为你想创建一个为mainActivity
设置一些内容的设置活动,你有两种方法可以实现你的目标:
button
。我会推荐这个,因为用户可能会输入内容并改变主意,这样点击“返回”将取消操作。editText
值保存在onPause
的{{1}}。每次用户退出活动时,此方法都将覆盖该值,无论如何。注意:请记住SettingsActivity
中的settingsActivity
文字,或者它总是为空。
另外一点是,总是如您在图片中看到的那样,一旦您从设置中回来,就不会再次调用活动onCreate/onResume
。因此,您可以使用onCreate
方法获取onResume
中的值并将其放入SharedPreference
文本视图中。
首先,我建议您研究MainActivity's
,因为它确实是编程Android的核心信息。
答案 1 :(得分:0)
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));
将此代码放入onPause()方法