RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 1336672
Accepted
МастерОК
МастерОК
Asked:2022-10-10 01:03:13 +0000 UTC2022-10-10 01:03:13 +0000 UTC 2022-10-10 01:03:13 +0000 UTC

无法通过对话框清除 SharedPreferences

  • 772

我决定通过对话框将 SharedPreferences 清除功能(其中存储笔记)与日历和笔记一起添加到我的应用程序中,但是出了点问题:当单击对话框中的“确定”按钮时,笔记应该已被清除,但由于某种原因,没有发生清除(没有出现错误),即使我使用以下命令确认了这一点:

editor.apply();

activity_notes.xml 代码:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="Notes">

    <ImageButton
        android:id="@+id/imageButton3"
        android:layout_width="83dp"
        android:layout_height="73dp"
        android:layout_marginStart="1dp"
        android:layout_marginLeft="1dp"
        android:layout_marginBottom="5dp"
        android:contentDescription="@string/addnote"

        android:onClick="addnote"
        android:src="@android:drawable/ic_input_add"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        tools:ignore="ImageContrastCheck" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="279dp"
        android:layout_marginBottom="324dp"
        android:orientation="vertical"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent">

        <TextView
            android:id="@+id/final_text"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />
    </LinearLayout>

    <TextView
        android:id="@+id/notesView"
        android:layout_width="410dp"
        android:layout_height="468dp"
        android:text=""
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <ImageButton
        android:id="@+id/clear_notes"
        android:layout_width="65dp"
        android:layout_height="55dp"
        android:layout_marginStart="335dp"
        android:layout_marginLeft="335dp"
        android:layout_marginTop="538dp"
        android:layout_marginEnd="11dp"
        android:layout_marginRight="11dp"
        android:layout_marginBottom="10dp"
        android:contentDescription="@string/delete_notes"
        android:onClick="clear_notes"
        android:src="@android:drawable/ic_menu_delete"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        tools:ignore="SpeakableTextPresentCheck" />

</androidx.constraintlayout.widget.ConstraintLayout>

Notes.java 代码(如果有的话,方法中用于清除注释的代码clear_notes):

package com.masterok.calendar;



import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;


import android.widget.EditText;
import android.widget.ImageButton;


import android.widget.TextView;

import androidx.appcompat.app.AppCompatActivity;


public class Notes extends AppCompatActivity {

    final Context context = this;
    final Context context1 = this;
    public ImageButton button;
    public TextView final_text;
    public SharedPreferences pref;
    public EditText input_text;
    public TextView notesView;
    public final String save_key = "save note";





    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_notes);

        notesView = (TextView)findViewById(R.id.notesView);
        button = findViewById(R.id.imageButton3);
        final_text =  findViewById(R.id.final_text);

        init();}

    public void init(){
        pref = getSharedPreferences( "note",MODE_PRIVATE);
        input_text = findViewById (R.id.input_text);
        notesView.setText(pref.getString(save_key,"You haven`t got any note"));

    }

    public void clear_notes(View arg0){

        LayoutInflater li = LayoutInflater.from(context1);
        View promptsView = li.inflate(R.layout.deleting_notes, null);

        AlertDialog.Builder mDialogBuilder = new AlertDialog.Builder(context1);
        mDialogBuilder.setView(promptsView);
        mDialogBuilder
                .setCancelable(false)
                .setPositiveButton("OK",
                        new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog,int id) {

                                SharedPreferences sharedPrefs = context.getSharedPreferences(save_key, MODE_PRIVATE);
                                SharedPreferences.Editor editor = sharedPrefs.edit();
                                editor.apply();
                                editor.remove(save_key );
                                editor.apply();
                            }
                        })
                .setNegativeButton("Cancel",
                        new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog,int id) {
                                dialog.cancel();
                            }
                        });

        AlertDialog alertDialog = mDialogBuilder.create();

        alertDialog.show();
    }



        public void addnote(View arg0) {

            LayoutInflater li = LayoutInflater.from(context);
            View promptsView = li.inflate(R.layout.prompt, null);

            AlertDialog.Builder mDialogBuilder = new AlertDialog.Builder(context);

            mDialogBuilder.setView(promptsView);

            final EditText userInput = promptsView.findViewById(R.id.input_text);

            mDialogBuilder
                    .setCancelable(false)
                    .setPositiveButton("OK",
                            new DialogInterface.OnClickListener() {
                                public void onClick(DialogInterface dialog,int id) {

                                    final_text.setText(userInput.getText());
                                    SharedPreferences.Editor edit = pref.edit();
                                    edit.putString(save_key,final_text.getText().toString());
                                    edit.apply();
                                    notesView.setText(pref.getString(save_key,"You haven`t got any note"));
                                }
                            })
                    .setNegativeButton("Cancel",
                            new DialogInterface.OnClickListener() {
                                public void onClick(DialogInterface dialog,int id) {
                                    dialog.cancel();
                                }
                            });

            
            AlertDialog alertDialog = mDialogBuilder.create();

           
            alertDialog.show();
            }


}

Prompt.xml 代码(这是添加注释对话框):

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/layout_root"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:padding="10dp" >
    <TextView
        android:id="@+id/tv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/write_the_note"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <EditText
        android:id="@+id/input_text"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        >

        <requestFocus />
    </EditText>
</LinearLayout>

delete_notes.xml 的代码(这是删除笔记对话框):

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="@string/do_you_want_to_clear_notes" />
</LinearLayout>

请告诉我如何解决这个问题。

java
  • 1 1 个回答
  • 10 Views

1 个回答

  • Voted
  1. Best Answer
    МастерОК
    2022-03-15T21:27:20Z2022-03-15T21:27:20Z

    在查看用户woesss的评论后,我找到了问题的答案。问题出在我的代码中(在文件Notes.java中,在方法中init),即在这一行中:pref = getSharedPreferences( "note",MODE_PRIVATE);在这一行中,我试图获取我没有创建的 SharedPreferences。而不是这条错误的线,应该是这样的:getSharedPreferences(save_key, MODE_PRIVATE);当我纠正这个时,问题就消失了。如果您也有同样的问题,那么这个答案可能会对您有所帮助。

    • 1

相关问题

  • wpcap 找不到指定的模块

  • 如何以编程方式从桌面应用程序打开 HTML 页面?

  • Android Studio 中的 R.java 文件在哪里?

  • HashMap 初始化

  • 如何使用 lambda 表达式通过增加与原点的距离来对点进行排序?

  • 最大化窗口时如何调整元素大小?

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    表格填充不起作用

    • 2 个回答
  • Marko Smith

    提示 50/50,有两个,其中一个是正确的

    • 1 个回答
  • Marko Smith

    在 PyQt5 中停止进程

    • 1 个回答
  • Marko Smith

    我的脚本不工作

    • 1 个回答
  • Marko Smith

    在文本文件中写入和读取列表

    • 2 个回答
  • Marko Smith

    如何像屏幕截图中那样并排排列这些块?

    • 1 个回答
  • Marko Smith

    确定文本文件中每一行的字符数

    • 2 个回答
  • Marko Smith

    将接口对象传递给 JAVA 构造函数

    • 1 个回答
  • Marko Smith

    正确更新数据库中的数据

    • 1 个回答
  • Marko Smith

    Python解析不是css

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5