应用程序重新启动时保存视图状态android

时间:2017-08-24 09:00:35

标签: java android

我目前刚刚接触到android并正在处理笔记记录应用程序,所以请耐心等待我。在菜单中,我实现了一个选项,用户可以根据需要更改视图(列表或网格)。

 LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View customTitleView = inflater.inflate(R.layout.dialog_menu, null);
        mListViewSelect = (LinearLayout) customTitleView.findViewById(R.id.list_select);
        mGridViewSelect = (LinearLayout) customTitleView.findViewById(R.id.grid_select);
case R.id.changeView:
                final AlertDialog alertbox = new AlertDialog.Builder(this).create();
                alertbox.setCancelable(true);
                alertbox.setView(customTitleView);
                alertbox.show();
                mListViewSelect.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        mListNotes.setVisibility(View.VISIBLE);
                        mGridNotes.setVisibility(View.GONE);
                        alertbox.dismiss();
                    }
                });
        mGridViewSelect.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        mListNotes.setVisibility(View.GONE);
        mGridNotes.setVisibility(View.VISIBLE);
        alertbox.dismiss();
    }
});
        }
        return super.onOptionsItemSelected(item);
    }

这完美无缺。但是,我希望应用程序在用户最初选择的选定视图中打开。例如,如果用户在gridview中关闭了应用程序,应用程序应在重新启动时在gridview中打开。

我理解我需要使用共享首选项或其他东西持久保存数据。但我需要确切地知道我需要做什么。

2 个答案:

答案 0 :(得分:1)

如果您想将数据保存在共享首选项中,可以使用以下方法。

首先,您需要创建SharedPreferences和SharedPreferences.Editor的实例:

private SharedPreferences settings = context.getSharedPreferences("*Desired preferences file", Context.MODE_PRIVATE);
  

*所需的偏好文件。如果此名称的首选项文件不存在,则在检索编辑器时将创建该文件   (SharedPreferences.edit())然后提交更改(Editor.commit())。

 private SharedPreferences.Editor editor = settings.edit();

如果您需要保存字符串:

 editor.putString(key, val).commit()

请勿忘记 .commit();

从SharedPreferences获取字符串:

String str = settings.getString(key, "");

保存Int:

只需使用:

editor.putInt(key, val).commit();

等等。

答案 1 :(得分:0)

你是正确的,你需要保持数据,但你有选择。你说它是一个笔记记录应用程序,你在哪里保存你的笔记?

您可以将应用程序的状态存储在共享首选项中,如文档here中所述。您可以存储应用程序状态,以及数据库中的所有注释,例如关系数据库,其中有大量的教程和主文档可以找到here,或者可以存储数据库,例如Realm,用于将对象保存到数据库中。

我会研究这些选项,并实施一个。然后,在应用程序启动时,检查已保存的“应用程序状态”并相应地调整UI!