android - SharedPreferences ToggleButton 不保存

标签 android eclipse sharedpreferences

*最近几天我一直在为这个问题发疯。我正在尝试使用 SharedPreferences 让我的用户通过 ToggleButton 保存游戏内音频的选定选项,但每次我运行我的应用程序时然后点击我的“完成”按钮返回到 main_activity 屏幕,然后再次点击设置,它永远不会保存。我已经通过谷歌搜索、我的书和这个网站做了一些研究,但是通过很多方法我已经尝试了结果是一样的。 我是 android 开发的新手,更不用说应用程序开发了,所以据我过去几周的了解,这对我来说是一个主要障碍,如果这个问题已经在这个网站上解决了,我深表歉意,但我真的很茫然关于我在这里做错了什么。 这是我的设置 Activity 中的代码。

package com.fullfrontalgames.numberfighter;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.Preference;
import android.preference.PreferenceManager;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CompoundButton;
import android.widget.ToggleButton;    

public class Settings extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.settings);  

        Button Notifications = (Button) findViewById(R.id.Notifications);
        Button Done = (Button) findViewById(R.id.done);
        Button AccountSettings = (Button) findViewById(R.id.AccountSettings);
        final ToggleButton AT = (ToggleButton) findViewById(R.id.AudioToggle);
        AT.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                {
                    if ((AT.isChecked()))
                    {
                        SharedPreferences appPrefs =
                        getSharedPreferences("com.fullfrontalgames.numberfighter.Settings_preferences",
                                        MODE_PRIVATE);
                        SharedPreferences.Editor editor = appPrefs.edit();
                        editor.putBoolean("atpref", AT.isChecked()); //value to store
                        editor.commit();
                    }
                }
            }
        });
        SharedPreferences appPrefs =
                getSharedPreferences("com.fullfrontalgames.numberfighter.Settings_preferences",
                MODE_PRIVATE);
        boolean atpref = appPrefs.getBoolean("atpref", true); //default is true
        AT.setChecked(atpref);
        Done.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                Intent Intent = new Intent(Settings.this,activity_main.class);
                Intent.setFlags(android.content.Intent.FLAG_ACTIVITY_CLEAR_TOP);
                startActivity(Intent);



            }
        });
        Notifications.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                startActivity(new Intent("com.fullfrontalgames.numberfighter.Notifications"));
            }
        });
        AccountSettings.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                startActivity(new Intent("com.fullfrontalgames.numberfighter.AccountSettings"));
            }
        });

    }    

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

        if (on) {
            view.setSoundEffectsEnabled(true);
        } else {
            view.setSoundEffectsEnabled(false);

        }
    }

}

最佳答案

如果您试图在 ToggleButton 的状态为 false 时保存它,只需删除 OnClickListener 中的 if 语句:

if ((AT.isChecked()))

<罢工>

关于android - SharedPreferences ToggleButton 不保存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15592869/

相关文章:

java - 在 Windows 上使用 Chef 安装 JDK 1.7 和 Eclipse

java - 就像从命令行一样在 Eclipse 中运行 Java 程序

java - AST 解析器出现问题

java - 如何更改 AndEngine 中的 TimerHandler 延迟?

android - 使用 --env.aot 标志时未构建 Nativescript 应用程序

android - 如何使用 ACTION_PACKAGE_FIRST_LAUNCH intent-filter 启动应用程序?

java - 如何处理来自 sharedpreferences getStringSet 的数据?

android - 无法从 Android 中的首选项中获取项目

android - 如果在 Android 中达到特定日期和时间,我如何在后台检查

android - Boot BroadcastReceiver 在小米设备上不起作用