【问题标题】:Restore the edit text value entered恢复输入的编辑文本值
【发布时间】:2018-07-13 09:33:01
【问题描述】:

值是在活动A的编辑文本中输入的。当转到另一个活动B而不保存并返回A时,活动A的编辑文本中的表单值将被清除。如何恢复编辑文本值?

 @Override
protected void onSaveInstanceState(Bundle outState) {

    outState.putString("company", company.getText().toString());
    outState.putString("name", name.getText().toString());
    outState.putString("email",email.getText().toString());
    outState.putString("phone",phone.getText().toString());
    outState.putString("address",address.getText().toString());
    outState.putString("desc",desc.getText().toString());
    super.onSaveInstanceState(outState);
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
    super.onRestoreInstanceState(savedInstanceState);
     co = savedInstanceState.getString("comoany");
     em = savedInstanceState.getString("email");
     ph = savedInstanceState.getString("phone");
     add = savedInstanceState.getString("address");
     na = savedInstanceState.getString("name");
     de = savedInstanceState.getString("desc");
}

@Override
protected void onResume() {

    Log.i("this", "Company::::::::::::" + co);
    company.setText(co);
    super.onResume();
}

【问题讨论】:

标签: android android-edittext


【解决方案1】:

您需要在活动 A 中覆盖 onSaveInstanceState 并将您的编辑文本的值存储如下:

 @Override
public void onSaveInstanceState(Bundle outState) {

outState.putString(TEXT_VIEW_KEY, mTextView.getText());

// call superclass to save any view hierarchy
super.onSaveInstanceState(outState);

}

现在应该在您的 onCreate 活动中检查是否有以前保存的任何数据,然后初始化您的 textview

@Override
public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

// recovering the instance state
if (savedInstanceState != null) {
    String text  = savedInstanceState.getString(TEXT_VIEW_KEY,);
}


setContentView(R.layout.main_activity);

// initialize member TextView so we can manipulate it later
mTextView = (TextView) findViewById(R.id.text_view);
mTextView.setText(text);

}

您可能还想检查 android 的架构组件,特别是生命周期感知组件,以简化您的工作

【讨论】:

    【解决方案2】:

    这不是 Android 的默认行为。

    Activity A 将保留值直到它完成(销毁)。检查您是否在startActivity() 之后没有调用finish()

    一些解决方案可以。

    【讨论】:

      【解决方案3】:

      检查这个question你不需要以任何方式保存你的文本只需输入finish() 在第二个活动结束时

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-01-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-11-13
        相关资源
        最近更新 更多