保存Edittext并使其保留在EditText上

时间:2016-08-14 07:33:38

标签: java android

我有一个应用程序,我在editText中获取用户的名称并将其存储到firebase但是当我退出活动并返回到它时,editText字段不显示用户的名称了。我希望他们的名字留在editText字段中。 我也将如何做同样的事情,但是对于用户放入的ImageView中的图像。请帮助。

4 个答案:

答案 0 :(得分:0)

<强> IDEA: 您可以使用共享首选项。当用户启动他的应用程序时,第一个任务将从共享首选项加载他的用户名和密码。

通过这样做,您还可以管理会话管理器以获得更好的用户体验。

例如:每次成功验证后,您都可以存储每次更新屏幕所需的用户基本信息。

<强>益处: 如果用户在未启用互联网的情况下启动您的应用,这将帮助您在屏幕上显示旧数据。您可以查看互联网,如果禁用,则只需显示偏好的旧数据。

答案 1 :(得分:0)

你可以做这样的事情

final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);

text.addTextChangedListener(new TextWatcher() {
@Override
  public void onTextChanged(CharSequence s, int start, int before,
                            int count)
{
  prefs.edit().putString("autoSave", s.toString()).commit();
}

@Override
  public void beforeTextChanged(CharSequence s, int start, int count,
                                int after)
{
}

@Override
  public void afterTextChanged(Editable s)
{
   //At here you can call some method to get the text from shared preferences and display it on EDitText

}

或者您可以在onTextChanged()方法

中保存到DB中

答案 2 :(得分:0)

这是一个小活动示例,在活动停止时将用户名保存到SharedPreferences中,并在(重新)启动活动时将值恢复为EditText:

public class Test extends Activity {

    EditText edtUser;
    SharedPreferences preferences;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        preferences = PreferenceManager.getDefaultSharedPreferences(this);

        edtUser = (EditText) findViewById(R.id.editTextUser);
        edtUser.setText(preferences.getString("username", ""));



    }

    @Override
    protected void onStop() {
        super.onStop();

        preferences.edit().putString("username", edtUser.getText().toString()).commit();

    }



}

答案 3 :(得分:0)

设置单击侦听器以编辑文本。 在里面单击启用编辑文本并使用setValue写入firebase。

设置单击到父布局或检查是否已更改编辑文本。内部使用add value事件监听器从firebase读取。

在Oncreate中禁用编辑文本并使用添加值事件侦听器从firebase读取。

这将无缝地自动保存和检索编辑文本数据。

在OnCreate中创建活动方法

//初始化edittext

mEditText =(EditText)findViewById(R.id.edittext);

//禁用mEditText

mEditText.setEnabled(假);

//如果mTextEdit未处于焦点,则从firebase读取并将文本设置为mEditText

if(!mEditText.isFocused()){

mFirebaseRef.addValueEventListener(new ValueEventListener(){

        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            String editTextData = (String) dataSnapshot.getValue();
            mEditText.setText(editTextData);
        }

        @Override
        public void onCancelled(FirebaseError firebaseError) {

        }
    });

}

//将onclick侦听器设置为mEditText

mEditText.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            mEditText.setEnabled(true);
            editTextData = mEditText.getText().toString();
            mFirebaseRef.setValue(editTextData);
        }
    }); 

这适用于我,UI看起来很简单,没有任何额外的按钮可以在编辑和保存之间切换。

希望我能正确理解你的要求。感谢