当前位置: 首页 > 知识库问答 >
问题:

应用程序中的编辑按钮在编辑时不保存

岳泳
2023-03-14

Android Studio中我的应用程序的edit按钮可以编辑,但编辑完文本后,退出窗口时将不会保存。怎么办?

 public class BellPepperActivity extends AppCompatActivity {

    TextView bpTextView;
    AlertDialog dialog;
    EditText editText;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_bell_pepper);

        bpTextView = (TextView) findViewById(R.id.bpTextView);
        dialog = new AlertDialog.Builder(this).create();
        editText = new  EditText(this);
        dialog.setTitle("BELL PEPPER");

        dialog.setView(editText);

        dialog.setButton(DialogInterface.BUTTON_POSITIVE, "SAVE", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                bpTextView.setText(editText.getText());
            }
        });

        bpTextView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                editText.setText(bpTextView.getText());
                dialog.show();
            }
        });


    }
}

共有1个答案

莘翰采
2023-03-14

在窗口中,我假设您是活动(您创建的AppCompatActivity)。要维护活动中的状态,您必须了解活动生命周期。基本上,当您离开时,您必须保存实例状态:

// invoked when the activity may be temporarily destroyed, save the instance state here
@Override
public void onSaveInstanceState(Bundle outState) {
    outState.putString(TEXT_VIEW_KEY, editText.getText());

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

当你恢复状态时,你也会这样做:

//仅当先前使用//onSaveInstanceState()保存了已保存的实例时,才会调用此回调。我们在onCreate()中恢复一些状态,同时可以选择恢复

// other state here, possibly usable after onStart() has completed.
// The savedInstanceState Bundle is same as the one used in onCreate().
@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
    editText.setText(savedInstanceState.getString(TEXT_VIEW_KEY));
}

显然,您必须在类的顶部创建一个TEXT_VIEW_KEY作为私有最终字符串:

private static final String TEXT_VIEW_KEY = "TEXT_VIEW_KEY";

未经测试,但现在应该适合你了。对于更高级的生命周期处理,请了解Android架构组件,但这应该等到您了解Android应用程序中的基本活动生命周期之后。

 类似资料:
  • 我是Android的新手,正在开发我的第一个应用程序。我的主要活动(登录活动)没有操作栏,其余所有活动都有操作栏。当我长时间按下编辑文本时,应用程序会与下面提到的logcat崩溃。我无法找出导致此错误的原因。请帮我找到它。 主要活动.java activity_main.xml

  • 不确定此功能是否内置到UITableViewCell中,但我想模仿邮件应用程序的行为。我有一个带有动态单元格的。当用户执行左滑动手势时,删除按钮(我相信邮件应用中的按钮文本是存档而不是删除)应该出现在单元格的右侧。 我不知道在那之后要做什么来删除该行。如果用户向右滑动或点击中的任何其他位置,我只需要使按钮出现和消失。 我更愿意这样做,而不必添加“编辑”按钮,也不必按照“表视图编程指南”将表视图置于

  • 在JavaFX 8中,我尝试在将新行添加到表中后编辑单元格,以优化用户体验。 选择了正确的行,但单元不会进入编辑模式。嗯,我很偶然地看到了这种情况,但很难再现。我做错了什么?

  • 我在我的活动中使用了简单的,如下所示。我已经尝试了来自堆栈和其他资源的不同解决方案,但它不能解决我的问题。 编辑: 我在这里找到了解决方案,从应用程序中删除字体系列。但我像下面一样使用。有没有办法仅删除编辑文本的字体?保持应用程序与字体一起工作? 样式.xml值-v21 文件夹中

  • 有人知道一种只需单击行即可触发行编辑的方法吗? 我希望看到与单击编辑命令按钮时相同的功能,但通过选择行触发。

  • 我正在开发一个Eclipse4 RCP应用程序。我对某些部分和一个编辑有一个观点。编辑器的目的是打开、编辑和保存一个字符串。 编辑完编辑器的内容后,如何将其保存成字符串?当使用文件时,编辑器将其内容直接保存到文件中。