0

スイッチ (オン/オフ) の値を取得し、データを別のクラスに伝えようとしています。

私はスイッチステートメントを使用していません。ユーザーがチェックまたはチェック解除できる物理スイッチがあります。

別のクラスでデータを使用するには、このスイッチの値を取得する必要があります。

これが私が使用しようとしたものです:

Switch vibeBlocker = (Switch) findViewById(R.id.hideVibeSwitch);

@Override
    public void onRestoreInstanceState(Bundle savedInstanceState) {
    super.onRestoreInstanceState(savedInstanceState);
    Boolean vibeHider = Boolean.valueOf(vibeBlocker);
}

回線にエラーが表示されますBoolean vibeHider = Boolean.valueOf(vibeBlocker);。スイッチの値を取得して に変換する方法がわかりませんboolean。などのメソッドを使用できることは知っていますが.toString();、s に似たものはありbooleanますか?

スイッチの値を 2 つのクラス間で転送する必要がありますが、これでうまくいくと思います。誰かがここでの正しいステートメント、またはこれを行うより良い方法を知っている場合は、私に知らせてください。

ありがとう!

ネイサン

4

1 に答える 1

0

私はスイッチを宣言し、ID でそれを見つけていましたが、うまくいきませんでした。代わりに、SharedPreferenceManager を使用booleanしてバンドルに追加する必要がありました。

@Override
public void onSaveInstanceState(@NonNull Bundle savedInstanceState) {
    super.onSaveInstanceState(savedInstanceState);
    SharedPreferences mSharedPreferencesManager = PreferenceManager.getDefaultSharedPreferences(this);
    vibeBlock = mSharedPreferencesManager.getBoolean("vibration_checkbox", false);
    savedInstanceState.putBoolean("myBoolean", vibeBlock);
}

それbooleanはバンドルに入れるのに役立ちました。MainActivity でそれを引き出す方法は次のとおりです。

@Override
public void onRestoreInstanceState(@NonNull Bundle savedInstanceState) {
    super.onRestoreInstanceState(savedInstanceState);
    hideVibe = savedInstanceState.getBoolean("myBoolean");
}

これも追加しました:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate();
    (Creation code)
    SharedPreferences mSharedPreferencesManager = PreferenceManager.getDefaultSharedPreferences(this);
    hideVibe = mSharedPreferencesManager.getBoolean("vibration_checkbox", false);

    if (hideVibe) {
        switchConv.setVisibility(View.GONE);
    } else if (!hideVibe) {
        switchConv.setVisibility(View.VISIBLE);
    }
}

そしてこれも:

@Override
protected void onResume() {
    super.onResume();
    SharedPreferences mSharedPreferencesManager = PreferenceManager.getDefaultSharedPreferences(this);
    hideVibe = mSharedPreferencesManager.getBoolean("vibration_checkbox", false);
    if (hideVibe) {
        switchConv.setVisibility(View.GONE);
    } else if (!hideVibe) {
        switchConv.setVisibility(View.VISIBLE);
    }
}

そして、それはトリックをしました:)

于 2015-06-08T01:28:20.760 に答える