【问题标题】:Sharedprefrences not saving?Sharedpreferences 不保存?
【发布时间】:2020-06-04 11:33:13
【问题描述】:

当我尝试将变量保存到共享首选项然后在编辑文本中调用它时它没有被保存?我已经四处寻找了几个小时,但我找不到任何东西。我知道 sharedPrefrences 在某种程度上就像字典一样,但除此之外我不明白为什么这不起作用:(

package com.example.gatorblocks;

import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.support.wearable.activity.WearableActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class block1Settings extends WearableActivity{

    private TextView mTextView;

    Context context = this;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_block1_settings);
        configureBackButton();
        configureColor();

        Button addTextButton = (Button) findViewById(R.id.Apply);
        TextView simpleEditText =  findViewById(R.id.simpleEditText);
        SharedPreferences prefs = getSharedPreferences("classes.txt", 0);
        simpleEditText.setText(prefs.getString("classes1","1-1"));                 //set textbox to equal current class

        final EditText vEditText = (EditText) findViewById(R.id.simpleEditText);


        mTextView = (TextView) findViewById(R.id.text);

        // Enables Always-on
        setAmbientEnabled();

        addTextButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String enteredText = vEditText.getText().toString();        //sets the array value of block to the editText
                test(enteredText);

            }
        });
    }
    private void configureColor() {
        Button Block1 = (Button) findViewById(R.id.colorButton);
        Block1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                startActivity(new Intent(block1Settings.this, colorBlock1.class));
                overridePendingTransition(R.anim.slide_in_right,R.anim.slide_out_left);
            }
        });
    }

    private void configureBackButton(){
        Button backbutton = (Button) findViewById(R.id.backButton);
        backbutton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                startActivity(new Intent(block1Settings.this, classes.class));
                overridePendingTransition(R.anim.slide_in_left,R.anim.slide_out_right);
                finish();

            }
        });
    }
    public void test(String enteredText){
        SharedPreferences pref = getSharedPreferences("classes.txt", 0);
        SharedPreferences.Editor editor = pref.edit();
        editor.putString("class1", enteredText);
        editor.apply();
    }

}

【问题讨论】:

  • 您是否收到任何错误日志?你的方法看起来不错。请检查是否正在调用函数test()。尝试在此函数内的 LogCat 中记录一些文本。
  • 能不能用 System.out.println("enteredText is ->" + enterText);您必须确保发送该值。
  • @AtishAgrawal 当我单击“保存”按钮时正在调用测试函数,但我没有收到任何错误日志,如何在 LogCat 中记录文本?
  • 使用 commit() 而不是 apply()
  • @MuratÇakır 当我在编辑文本中输入“文本”时,系统打印输入的文本是->文本

标签: android android-edittext sharedpreferences


【解决方案1】:

您是如何从SharedPreferences 获取未保存的数据的?您使用密钥 class1 保存数据并希望通过 classes1 获取它,这是不正确的方法。您必须使用相同的密钥。尝试使用

SharedPreferences prefs = getSharedPreferences("classes.txt", 0);
simpleEditText.setText(prefs.getString("class1","1-1"));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多