繁体   English   中英

在android中按下导航后退按钮时保留edittext数据

[英]preserve edittext data when navigation back button pressed in android

在我的申请表中有几个编辑文本,其中导航回按我的数据丢失并且焦点没有我可以在单击导航键后退按钮后保留该数据如何解决这个问题

欢迎在 StackOverflow 上发帖。 通常,发布您尝试过的内容是一种很好的做法,而不是为我解决这个问题,但是由于您是新来的,我会为您提供所需的信息。

当按下硬件后退按钮 onBackPressed 被触发时,您需要像这样覆盖它:

@Override
public void onBackPressed() {
}

然后你需要像这样设置活动结果:

Intent resultIntent = new Intent();
resultIntent.putExtra("edit_text_info", editText.getText().toString()); 
setResult(Activity.RESULT_OK, resultIntent);
finish();

并开始此活动以获得结果:

startActivityForResult(Activity, ActivityRequestCode);

然后用edittext覆盖调用活动的活动的onresult

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == ActivityRequestCode && resultCode == RESULT_OK && data != null) {
        editText = data.getStringExtra(ActivityRequestCode);
    }
}

从带有 editText 的活动接收状态后,将其保存在一个变量中,并在您使用 putStringExtra 导航回它后返回它,然后...完成。

另一种解决方案是创建一个包含此 edittext 的片段并将状态保留在活动中,但我的假设是您是 Android 新手,所以这可能更容易(当然比定义单例或其他东西更好)。

我得到了答案。在自定义列表视图中使用的自定义edittext中,我们必须在更改每个字符时进行保存。

edittext.addTextChangedListener(new TextWatcher() {
       @Override
       public void beforeTextChanged(CharSequence s, int start, int count, int after) {
       }
       @Override
       public void onTextChanged(CharSequence s, int start, int before, int count) {            
       }
       @Override
       public void afterTextChanged(Editable s) {
                String value =s.toString();
                mInterface.valueChanged((int)getTag(),value);
       }
});

这是值存储方法

@Override
public void valueChanged(int position, String value) {
    EachField eachfld =(EachField) eachFields.get(position);
    obtDetails.put(eachfld.key,value);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM