0

私はアンドロイドが初めてです。トグルボタンがチェックされたときにテキストの色を変更し、アプリが強制終了された場合でもトグルボタンとテキストの色の両方の状態を保存したい. 誰かがそれを行う方法のヒントを教えてください。ありがとう。

4

1 に答える 1

0

これは、設定を使用したトグルボタンとテキストビューの簡単な例です(状態を保存するため)。

以下の方法でレイアウトファイルを作成します

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="10dip"
        android:text="Large Text"
        android:textAppearance="?android:attr/textAppearanceLarge" />

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

あなたの活動で

public class MainActivity extends AppCompatActivity {

    TextView textItem;
    SharedPreferences sPref;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.content_main);
        // init Preferences
        sPref = PreferenceManager.getDefaultSharedPreferences(MainActivity.this);
        // init view
        textItem = (TextView) findViewById(R.id.textView);
        ToggleButton syncSwitch = (ToggleButton) findViewById(R.id.toggleButton1);
        // toggle button event
        syncSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                // set text color method
                setTextColor(isChecked);
                // save Toggle button state in Preference
                SharedPreferences.Editor ed = sPref.edit();
                ed.putBoolean("ToggleButton_CHECK", isChecked);
                ed.commit();
            }
        });

        // set default color if TextView called when activity started only for first time
        boolean saveState = sPref.getBoolean("ToggleButton_CHECK", false);
        setTextColor(saveState);
        syncSwitch.setChecked(saveState);
    }

    public void setTextColor(boolean isChecked) {
        if (isChecked) {
            // button is on
            textItem.setTextColor(ContextCompat.getColor(MainActivity.this, R.color.agro_purple));
        } else {
            // button is off
            textItem.setTextColor(ContextCompat.getColor(MainActivity.this, R.color.colorAccent));
        }
    }
}

それが役立つことを願っています!

于 2016-02-04T05:39:11.167 に答える