簡體   English   中英

保存狀態按鈕sharedpreferences Android

[英]Save state button sharedpreferences Android

我有一個浮動按鈕(不久后是一個按鈕),當我單擊它時,它會啟動服務和按鈕更改圖標。 我以這種方式嘗試過:

mFab = (FloatingActionButton)findViewById(R.id.fabbutton);
mFab.setDrawable(getResources().getDrawable(R.drawable.ic_play));
mFab.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View view) {
                if (RunService.isRunning) {
                    RunService.stopRun(MainActivity.this);
                    mFab.setDrawable(getResources().getDrawable(R.drawable.ic_play));
                    SharedPreferences.Editor editor = getSharedPreferences("com.mypck.asd", MODE_PRIVATE).edit();
                    editor.putBoolean("NameOfThingToSave", true);
                    editor.commit();

                } else {
                    startService(new Intent(MainActivity.this, RunService.class));
                    mFab.setDrawable(getResources().getDrawable(R.drawable.ic_pause));

                }
            }
        });

並獲取狀態:

SharedPreferences sharedPrefs = getSharedPreferences("com.mypck.asd", MODE_PRIVATE);
mFab.setChecked(sharedPrefs.getBoolean("NameOfThingToSave", true));

但是不能以這種方式工作,因為setChecked方法用於切換按鈕。.相反,我的按鈕很簡單! 我該如何解決?

所以只要在服務運行或不在if-else條件下將按鈕的兩個狀態都保存在SharedPreferencetruefalse

看下面的代碼。

SharedPreferences.Editor editor = getSharedPreferences("com.mypck.asd", MODE_PRIVATE).edit();
if (RunService.isRunning) {
                RunService.stopRun(MainActivity.this);
                mFab.setDrawable(getResources().getDrawable(R.drawable.ic_play));                   
                editor.putBoolean("NameOfThingToSave", true);                    
            } else {
                startService(new Intent(MainActivity.this, RunService.class));
                mFab.setDrawable(getResources().getDrawable(R.drawable.ic_pause));
               editor.putBoolean("NameOfThingToSave", false);
            }
editor.commit();

更新:

要檢索值,您必須喜歡

SharedPreferences sharedPrefs = getSharedPreferences("com.mypck.asd", MODE_PRIVATE);
boolean buttonState = sharedPrefs.getBoolean("NameOfThingToSave", true);

if(buttonState)
{
  mFab.setDrawable(getResources().getDrawable(R.drawable.ic_play)); 
}else{
  mFab.setDrawable(getResources().getDrawable(R.drawable.ic_pause));
}

更換

mFab.setDrawable(getResources().getDrawable(R.drawable.ic_play));

與我上面的代碼。

確定,只需將狀態保存為您的首選項即可。

   mFab.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View view) {
                SharedPreferences.Editor editor = getSharedPreferences("com.mypck.asd", MODE_PRIVATE).edit();

                    if (RunService.isRunning) {
                        RunService.stopRun(MainActivity.this);
                        mFab.setDrawable(getResources().getDrawable(R.drawable.ic_play));                        
                        editor.putBoolean("NameOfThingToSave", true);
                    } else {
                       startService(new Intent(MainActivity.this,RunService.class));    
                        mFab.setDrawable(getResources().getDrawable(R.drawable.ic_pause));
                       editor.putBoolean("NameOfThingToSave", false);
                    }
                    editor.commit();

                }
            });

暫無
暫無

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

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