切换按钮只工作第一次android

时间:2014-07-24 10:08:41

标签: android performance

我已经编写了保存切换按钮状态的代码。但它只是第一次工作。第二次不行。当我关闭它后重启我的Toggle按钮时。

prefs = PreferenceManager.getDefaultSharedPreferences(this);
    edit = prefs.edit();

    tb = (ToggleButton) findViewById(R.id.toggleButton1);   
    tb.setChecked(prefs.getBoolean("main_state", false));       
    tb.setOnCheckedChangeListener(this);

     // Toggle Button Save States ------------------------------------------
    tb.setOnClickListener(new ToggleButton.OnClickListener() {

        public void onClick(View v) {
            SharedPreferences sharedPreferences = PreferenceManager
                .getDefaultSharedPreferences(getApplicationContext());
            Editor editor = sharedPreferences.edit();
            editor.putBoolean("main_state", tb.isChecked());
            editor.commit();
        }
    });

在chackedChange

public void onCheckedChanged(CompoundButton arg0, boolean arg1) {
    if (arg1) {
        edit.putBoolean("main_state", arg1);            

    } else {
        edit.putBoolean("main_state", arg1);

    }
    edit.commit();
}

那么问题是什么?

1 个答案:

答案 0 :(得分:0)

请尝试这种方式,希望这有助于您解决问题。

<强> activity_main.xml中

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center">

    <ToggleButton
        android:id="@+id/toggleButton1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>

</LinearLayout>

<强> MainActivity.java

public class MainActivity extends Activity{

    ToggleButton tb;
    SharedPreferences sharedPreferences;
    SharedPreferences.Editor editor;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tb=(ToggleButton)findViewById(R.id.toggleButton1);

        sharedPreferences = getSharedPreferences(getString(R.string.app_name), MODE_PRIVATE);
        editor = sharedPreferences.edit();
        tb.setChecked(sharedPreferences.getBoolean("main_state",false));
        tb.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                editor.putBoolean("main_state",isChecked);
                editor.commit();
            }
        });
    }

}