简体   繁体   English

保存状态按钮sharedpreferences Android

[英]Save state button sharedpreferences Android

i've got a floatingbutoon (it's a button shortly), and when i click on it it starts a service and the button change icon. 我有一个浮动按钮(不久后是一个按钮),当我单击它时,它会启动服务和按钮更改图标。 I tried in this way: 我以这种方式尝试过:

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));

                }
            }
        });

and to retrieve the state: 并获取状态:

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

But not working in this way because setChecked method is for a toggle button..Instead mine is a simple button! 但是不能以这种方式工作,因为setChecked方法用于切换按钮。.相反,我的按钮很简单! How can i solve? 我该如何解决?

So just save both state of button in SharedPreference like, true and false when Service is running or not in if-else condition 所以只要在服务运行或不在if-else条件下将按钮的两个状态都保存在SharedPreferencetruefalse

Look at below code. 看下面的代码。

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();

Update: 更新:

To retrieving values you have to do like, 要检索值,您必须喜欢

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));
}

replace 更换

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

with my above code. 与我上面的代码。

Ok just save the state in your preference. 确定,只需将状态保存为您的首选项即可。

   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