簡體   English   中英

使用 SharedPreferences 保存和加載 Textcolor 和 TypeFace

[英]Saving and loading Textcolor and TypeFace using SharedPreferences

我正在處理的 APP 項目充當個人日程安排,您可以在其中寫下第二天的日程安排,保存它並在創建應用程序時,您最初輸入的所有文本仍然存在。 我最初使用共享首選項進行保存和加載 function 工作,但現在我想向應用程序添加一個熒光筆選項,將特定 editTexts 中的文本更改為粗體和紅色。

我嘗試使用 boolean sharedPref 變量作為告訴 EditText 顏色和字體應該是什么的方式,但我確定我編碼錯誤。 這是代碼:

  EditText et0;
  Button hb0, b1, b2;
public static final String SHARED_PREFS = "sharedPrefs";
public static final String SIX_AM = "sixAM";
SharedPreferences sharedPreferences;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    final MediaPlayer saveMP = MediaPlayer.create(this, R.raw.save);
    final MediaPlayer aNewDayMP = MediaPlayer.create(this, R.raw.anewday);

    // Each declared EditText variable in the code is then assigned an EditText from the xml.
    et0 =(EditText)findViewById(R.id.slot0);
    b1=(Button)findViewById(R.id.saveButton);
    b2=(Button)findViewById(R.id.clearButton);
    hB0=(Button)findViewById(R.id.highLighter0);

    sharedPreferences = getSharedPreferences(SHARED_PREFS, Context.MODE_PRIVATE);

    b1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {


            saveMP.start();
            SharedPreferences.Editor editor = sharedPreferences.edit();
            editor.putString(SIX_AM, et0.getText().toString());

            editor.commit();

            // Declaring a toast for the user to see they have saved their own data.
            Toast.makeText(MainActivity.this, "Saved!", Toast.LENGTH_SHORT).show();
        }
    });

   b2.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            aNewDayMP.start();
            et0.setText("");
        }
    });

   hB0.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

           if (et0.getCurrentTextColor()==Color.BLACK) {
               et0.setTextColor(Color.RED);
               et0.setTypeface(null, Typeface.BOLD);
               hBB0 = TRUE;

            } else {
                et0.setTextColor(Color.BLACK);
                et0.setTypeface(null, Typeface.NORMAL);
                hBB0 = FALSE;

            }


        }
    });

    loadData();

}
// The loadData method
public void loadData(){
    SharedPreferences sharedPreferences = getSharedPreferences(SHARED_PREFS, MODE_PRIVATE);
    et0.setText(sharedPreferences.getString(SIX_AM, ""));


Please note I am a complete amateur and did my best to parse away lines of code that weren't important to the question. If anyone can help or has a recommendation on a better way to do this, please let me know, cheers.

我懷疑問題在於您將 sharedPreferences 初始化了兩次,第一次在 onCreate() 作為字段(類屬性),第二次在 loadData 作為局部變量。 我認為,如果您刪除 loadData 中的初始化並簡單地使用 onCreate 中初始化的字段,它應該讀取存儲的值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM