通过在活动之间切换来保存“切换”状态(开启或关闭)

时间:2017-05-30 09:26:49

标签: java android switch-statement

我在Android应用程序中使用Switch来打开/关闭蓝牙。我打开蓝牙并返回MainActivity。但当我切换回myBluetooth Activity时,Switch会将自身切换到默认状态,即OFF。 如何保存Switch的状态,这样即使在活动之间切换,它仍然保持在以前的状态?我正在使用我用来开始新活动的代码。

backb.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent backb= new Intent(Bedroom.this, home.class);
            startActivity(backb);
        }
    });

4 个答案:

答案 0 :(得分:1)

您可以使用共享偏好

pref = getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE);

        SharedPreferences.Editor editor = sharedpreferences.edit();

        editor.putString(Name, n);
        editor.putString(Phone, ph);
        editor.putString(Email, e);
        editor.commit();//save string use boolean for switch state
pref.getString("key_name", null);// to  get string

example link

答案 1 :(得分:0)

当ON / OFF开关

时,你应该使用SharePreference来解决一些键和值

点击here

了解更多信息

例如

    SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);// To OPEN Sharepreference in Private mode

    SharedPreferences.Editor editor = sharedPref.edit();//create object to edit Preference

    editor.putInt(getString(R.string.saved_high_score), newHighScore);//You can also put String,boolean and many more primitive type of Data type supported by java

//getString(R.string.saved_high_score)>>your Key
//also type "keyValue"

    editor.commit();//at last you not forgot to commit your changes in sharepreference
  • 在这种情况下,您应该使用editor.putBoolean(“key”,false / true);

我希望这有助于您了解共享偏好的使用

答案 2 :(得分:0)

嗯,首先要知道的是,有几种方法可以保留信息,这取决于具体内容和方式。

  • 可以通过覆盖" onSaveInstanceState"来保存数据。保存数据的方法:

    @Override
    protected void onSaveInstanceState(Bundle outState){
        super.onSaveInstanceState(outState);
        outState.putString("INFORMATION", info);
    }
    
  • 并覆盖" onRestoreInstanceState"加载保存数据的方法:

    @Override
    protected void onRestoreInstanceState(Bundle savedInstanceState)
    {
        super.onRestoreInstanceState(savedInstanceState);
        info = savedInstanceState.getString("INFORMATION");
    }
    

因此,当活动状态发生变化时,它会保存变量'最后的值并在必要时恢复它们。

  • 使用SharedPreferencesSQLite DB可以更加永久地保存数据。

  • 您可以使用SharedPreferences保存数据。

    1. 首先,在第二个活动上创建SharedPreferences:

      SharedPreferences pref = getApplicationContext()
          .getSharedPreferences("MyPreferences", MODE_PRIVATE); 
      Editor editor = pref.edit();
      
    2. 然后将您的数据存储为KEY/VALUE对:

      editor.putString("key", "string value");
      editor.commit();
      
    3. 然后获取第一项活动的数据:

      SharedPreferences sharedPreferences = 
          PreferenceManager.getDefaultSharedPreferences(this);
      String value = mSharedPreference.getString("key", "");
      

Android Example上,您可以遵循一些SharedPreferences基础知识。

答案 3 :(得分:0)

您可以使用SharedPreferences存储布尔值:

在您的活动

中尝试此代码段
YOUR_SWITCH_INSTANCE.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener()
        {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
            {
                SharedPreferences.Editor editor = getSharedPreferences("YOUR_PREFERENCE_NAME", Context.MODE_PRIVATE).edit();
                editor.putBoolean("isChecked", isChecked);
                editor.apply();
            }
        });

活动onCreate()

SharedPreferences pref = getSharedPreferences("YOUR_PREFERENCE_NAME", Context.MODE_PRIVATE);
YOUR_SWITCH_INSTANCE.setChecked(pref.getBoolean("isChecked", false));

希望它能帮助:)

另外,请参阅 - https://developer.android.com/training/basics/data-storage/shared-preferences.html