【问题标题】:Android: Accessing SharedPreferences inside a DialogFragmentAndroid:在 DialogFragment 中访问 SharedPreferences
【发布时间】:2016-04-03 16:40:57
【问题描述】:

所以我有一个带有几个按钮的活动,每个按钮都有一个 TextView 波纹管,当我点击按钮时会出现一个带有 EditText 和“完成”按钮的对话框片段,我在 EditText 中写了一些东西,点击“完成”并且 ti 更改了我单击的按钮下方的文本,这工作正常。我需要的是用我已经拥有的共享首选项中的新文本替换以前的文本。

我的共享偏好设置:SharedPreferences prefs = getPreferences(Context.MODE_PRIVATE);

打开 Dialog 并传递 TextView 的 ID:

fm = getFragmentManager();
myFragment = new Fragment_Subject_Edit(); 

      FirstButton.setOnLongClickListener(new View.OnLongClickListener() {
        @Override
        public boolean onLongClick(View v) {
            Bundle data = new Bundle();
            data.putInt("ID", FirstText.getId());
            myFragment.setArguments(data);

            myFragment.show(fm, "ClassEditor");
            return false;
        }
    });

在对话框片段中接收 ID:

 if (getArguments() != null) {

        Bundle data = getArguments();
        int id = data.getInt("ID");

        mTextView = (TextView) getActivity().findViewById(id);

    }

在按钮下方的 TextView 中添加新文本:

 DoneButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            String newText = mEditText.getText().toString();
            mTextView.setText(newText);
            getDialog().dismiss();

        }
    });

这里的问题实际上只是如何更新共享首选项

【问题讨论】:

    标签: java android android-fragments dialog sharedpreferences


    【解决方案1】:

    您只需使用Editor 将新数据保存到SharedPreferences

    所以在这种情况下,您的代码将是这样的

    DoneButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            String newText = mEditText.getText().toString();
            mTextView.setText(newText);
            SharedPreferences.Editor e = getActivity().getPreferences(Context.MODE_PRIVATE).edit();
            editor .putString ("key","your_value");
            editor .commit();
            getDialog().dismiss();
    
        }
    });
    

    【讨论】:

    • 好的,那么现在,我是否必须为每个键值创建一个条件,或者是否有更简单的方法来检查单击了哪个按钮,然后选择相应的键?
    • 您可以implement onClickListener 到您的片段,并可以在switch / case 块上检查您的条件。
    猜你喜欢
    • 2020-01-20
    • 2014-09-10
    • 2012-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-27
    • 1970-01-01
    相关资源
    最近更新 更多