如何保存更改切换按钮

时间:2015-05-09 03:45:16

标签: javascript android eclipse

我想制作可以播放背景声音服务的切换按钮。这是我的代码。

 public class MainActivity extends Activity {

 private Switch mySwitch;

 @Override
 public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    }

 @Override
    public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
    }

        public void playRain(View view) {
        // Is the toggle on?
        boolean on = ((Switch) view).isChecked();

        if (on) {
            Intent objIntent = new Intent(this, PlayRain.class);
            startService(objIntent);
        } else {
            Intent objIntent = new Intent(this, PlayRain.class);
            stopService(objIntent);  
        }
    }

}

当我将切换按钮切换为开启时,声音播放。但当我点击主页按钮并重新打开应用程序时,切换按钮会重新关闭。如何保存更改切换按钮?这样切换按钮本身不会回到关闭状态。对不起我的英文。

1 个答案:

答案 0 :(得分:0)

您可能需要在SharedPreferences中保存切换按钮的状态。 This可能有帮助。

我写了一个示例代码。我希望它有所帮助

public class MainActivity1 extends Activity {

private Switch mySwitch;
SharedPreferences pref;
Editor edit;
final String SOUND_PREF_KEY = "background_sound";

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    mySwitch = (Switch) findViewById(R.id.switch1);
    pref = getPreferences(MODE_PRIVATE);
    edit = pref.edit();
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

@Override
protected void onResume() {
    // TODO Auto-generated method stub
    super.onResume();
    mySwitch.setChecked(pref.getBoolean(SOUND_PREF_KEY, false));
}

@Override
protected void onStop() {
    super.onStop();
    if (mySwitch.isChecked()) {
        edit.putBoolean(SOUND_PREF_KEY, true);
    } else {
        edit.putBoolean(SOUND_PREF_KEY, false);
    }
    edit.commit();

}

public void playRain(View view) {
    // Is the toggle on?
    boolean on = ((Switch) view).isChecked();

    if (on) {
        Intent objIntent = new Intent(this, PlayRain.class);
        startService(objIntent);
    } else {
        Intent objIntent = new Intent(this, PlayRain.class);
        stopService(objIntent);
    }
}

}