android - 如何使用共享首选项保存切换按钮状态

标签 android sharedpreferences togglebutton

<分区>

如何使用共享首选项保存此切换按钮状态并在我的所有 Activity 中使用,我放置了共享首选项代码,但这个代码不起作用,所以我错过了什么或此代码有问题

这是新代码和整个类代码,请检查它,也许有什么影响代码

public class CollectionPrayersTextActivity extends Activity {

    boolean on;
    public SharedPreferences tprefs;
    final String PREF_NAME="preferences";
    public static TextView textview;
    private SharedPreferences prefs;
    private SeekBar seekbar;
    private ToggleButton toggle;
    private LinearLayout linear;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // Remove title bar
        this.requestWindowFeature(Window.FEATURE_NO_TITLE);
        // Remove notification bar
        this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
            WindowManager.LayoutParams.FLAG_FULLSCREEN);
        Window window = getWindow();
        // Unlock the device if locked
        window.addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
        // Turn screen on if off
        window.addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
        // Keep screen on
        window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
        // Transition between activities
        overridePendingTransition(R.anim.incoming, R.anim.outgoing);
        // On Create
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_collectionprayers_text);
        // Determine The Tools
        seekbar = (SeekBar)     findViewById(R.id.seekBarcollectionprayerstext);
        textview = (TextView)     findViewById(R.id.id_collectionprayers_txt);
        toggle = (ToggleButton) findViewById(R.id.toggleButton1);
        linear = (LinearLayout) findViewById(R.id.linear1);
        // Toogle Share Preferences

        SharedPreferences tprefs = getSharedPreferences("com.e_orthodoxy.orthodox_prayers", MODE_PRIVATE);
        toggle.setChecked(tprefs.getBoolean("On", true));
        // Get Extra From Another Activity
        Intent n = getIntent();
        String mrng = n.getStringExtra("key");
        textview.setText(Html.fromHtml(mrng));
        // SeekBar Preferences
        prefs = getPreferences(MODE_PRIVATE);
        float fs = prefs.getFloat("fontsize", 40);
        seekbar.setProgress((int) fs);
        textview.setTextSize(TypedValue.COMPLEX_UNIT_PX, seekbar.getProgress());
        // Programming SeekBar
        seekbar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {

            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {
                prefs = getPreferences(MODE_PRIVATE);
                SharedPreferences.Editor ed = prefs.edit();
                ed.putFloat("fontsize", textview.getTextSize());
                ed.commit();
            }

            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {

            }

            @Override
            public void onProgressChanged(SeekBar seekBar, int progress,
                boolean fromUser) {
                textview.setTextSize(TypedValue.COMPLEX_UNIT_PX, progress);
            }
        });
        // Programming ToggleButton
        toggle.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                if (toggle.isChecked()) {
                    textview.setTextColor(Color.WHITE);
                    linear.setBackgroundColor(Color.BLACK);
                    textview.setShadowLayer(0, 0, 0, Color.WHITE);
                    SharedPreferences.Editor editor =getSharedPreferences("com.e_orthodoxy.orthodox_prayers", MODE_PRIVATE).edit();
                    editor.putBoolean("On", true);
                    editor.commit();

                } else {

                    textview.setTextColor(Color.BLACK);
                    linear.setBackgroundColor(Color.WHITE);
                    textview.setShadowLayer(0, 0, 0, Color.BLACK);
                    SharedPreferences.Editor editor =getSharedPreferences("com.e_orthodoxy.orthodox_prayers", MODE_PRIVATE).edit();
                    editor.putBoolean("Off", false);
                    editor.commit();

                }
            }
        });
    }

    public void c_default(View V) {
        textview.setTextColor(getResources().getColor(R.color.Vanilla));
    linear.setBackgroundColor(getResources().getColor(R.color.Maroon));
        textview.setShadowLayer((float) 1.5, 2, 2, Color.BLACK);
    }

    @Override
    public void onBackPressed() {
        Intent intent_e3tiraf_back = new Intent(
            CollectionPrayersTextActivity.this,
            CollectionPrayersActivity.class);
        startActivity(intent_e3tiraf_back);
        finish();
    }
}

最佳答案

保存:

@Override
public void onClick(View v) 
{
    if (toggle.isChecked()) 
    {
        SharedPreferences.Editor editor = getSharedPreferences("com.example.xyz", MODE_PRIVATE).edit();
        editor.putBoolean("NameOfThingToSave", true);
        editor.commit();
    }
    else
    {
        SharedPreferences.Editor editor = getSharedPreferences("com.example.xyz", MODE_PRIVATE).edit();
        editor.putBoolean("NameOfThingToSave", false);
        editor.commit();
    }
}

加载:

@Override
protected void onCreate(Bundle savedInstanceState) 
{
    SharedPreferences sharedPrefs = getSharedPreferences("com.example.xyle", MODE_PRIVATE);
    toggle.setChecked(sharedPrefs.getBoolean("NameOfThingToSave", true));
}

SharedPreferences.Editor.putBoolean

SharedPreferences.Editor.getBoolean

关于android - 如何使用共享首选项保存切换按钮状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18899182/

相关文章:

java - 如何持久保存数据以便我可以离线使用它们

java - 如何隐藏底部导航栏的项目

android - 无法从 SharedPreferences 获取字符串值

android - 哪个更快? Android 中的 SharedPreference 或文件

android - 如何从 SharedPreferences 中删除一些包含字符串的键?

qt - 使用 Qt 实现切换按钮的最佳方式

android - 在不切换 Activity 的情况下显示不同的图像形式

java - GPS应用距离

java - 如何一次只允许 3 个中的 1 个 android 切换按钮打开

Android - TextView 和 Togglebutton 之间的空间?