如何在Android Studio中保存交换机的当前状态?

时间:2017-02-07 02:31:26

标签: android-activity switch-statement toggle state

我对编程知之甚少。我下载了Android Studio并开始修补它。我试着制作他们放在教程上的应用程序并且它有效。但是我尝试添加更多功能,到目前为止我都失败了。对不起,如果你在我的代码中看到不必要的垃圾,我只是先尝试​​一切,我觉得有点误导。

无论如何,关于这个问题。我有一个带有OnClick操作的Switch(id:toggle_text)(change_font)。当切换开关时,它应该通过intent1改变不同活动的字体大小。目前它不仅不发送字体大小变量(该变量保持你在getIntExtra上放置的默认值),但是现在我尝试添加保存当前状态的能力,它只显示错误。这是代码:

package com.example.myfirstapp;

import android.content.Intent;
import android.content.SharedPreferences;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.ToggleButton;
import android.widget.TextView;
import static com.example.myfirstapp.R.id.toggle_text;
import static com.example.myfirstapp.R.string.change_font;


public class ShowAnOption extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_show_an_option);
    SharedPreferences sharedPrefs = getSharedPreferences("com.example.xyz", MODE_PRIVATE);
    toggle.setChecked(sharedPrefs.getBoolean("NameOfThingToSave", true));
}

public void change_font(View v) {

    int fssize;

    if (toggle.isChecked())
    {
        SharedPreferences.Editor editor = getSharedPreferences("com.example.xyz", MODE_PRIVATE).edit();
        editor.putBoolean("NameOfThingToSave", true);
        editor.commit();
        fssize=20;
    }
    else
    {
        SharedPreferences.Editor editor = getSharedPreferences("com.example.xyz", MODE_PRIVATE).edit();
        editor.putBoolean("NameOfThingToSave", false);
        editor.commit();
        fssize=40;
    }

    Intent intent1 = new Intent (getBaseContext(), DisplayMessageActivity.class);
    intent1.putExtra("Font_Size", fssize);

}

}

它说"无法解决符号切换问题" onggle.setChecked()和if语句。我该怎么做才能解决这个问题?另外,为什么它不会被发送到其他活动?这是其他活动的代码:

package com.example.myfirstapp;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.ViewGroup;
import android.widget.TextView;

public class DisplayMessageActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_display_message);

    Intent intent = getIntent();
    Intent intent1 = getIntent();
    String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
    int Font_Size = intent1.getIntExtra("Font_Size",50);
    TextView textView = new TextView(this);
    textView.setTextSize(Font_Size);
    textView.setText(message);

    ViewGroup layout = (ViewGroup) findViewById(R.id.activity_display_message);
    layout.addView(textView);
}
}

感谢和抱歉长时间阅读。如果还有其他需要知道的事情让我知道,我很乐意展示。

1 个答案:

答案 0 :(得分:0)

我们没有尝试更改字体大小,但这里是如何使用切换小部件。 我们的设计是两个活动MainActivity和SwitchActivity我们将CheckBox从未选中更改为已选中。切换位于下面的MainActivity代码

    setOnCheckedChangeListener();
private void setOnCheckedChangeListener() {
    swAll.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            if (isChecked) {
                Toast.makeText(MainActivity.this, "Switch On", Toast.LENGTH_SHORT).show();
                Intent intentSP = new Intent(MainActivity.this, SwitchActivity.class );
                Bundle extras = new Bundle();
                extras.putString("FONT","true" );
                intentSP.putExtras(extras);
                startActivity( intentSP );
            } else {
                Toast.makeText(MainActivity.this, "Switch Off", Toast.LENGTH_SHORT).show();
            }
        }
    });
}

现在在SwitchAcvity中,我们从intent中捕获值并触发方法 doWhat()

        Intent intentSP = getIntent();
    Bundle bundle = intentSP.getExtras();
    tORf = bundle.getString("FONT");
    doWhat(null);

这是doWhat方法

    public void doWhat(View view){
    if(tORf.equals("true")){
        chkBoxOne.setChecked(true);
    }else {
Toast.makeText( SwitchActivity.this, "NOT TRUE", Toast.LENGTH_LONG ).show();
    }
}