-2

アプリに基本設定を追加しようとしています。checkBox がチェックされていない場合、アクティビティの 1 つで EditText のヒントを変更したいと思います。

設定.xml

    <?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
    <CheckBoxPreference
        android:key="PREF_SHOW_UNITS"
        android:id="@+id/Check1"
        android:title="Show units in Kinematics"
        android:defaultValue="true" >
    </CheckBoxPreference>
</PreferenceScreen>

設定Activity.java:

package com.supermath.jacobgb24.supermath;

import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.PreferenceActivity;
import android.preference.PreferenceFragment;
import android.preference.PreferenceManager;

import static com.supermath.jacobgb24.supermath.R.xml.preferences;

public class SettingsActivity extends PreferenceActivity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(preferences);
    }
}

変更を追加しようとしているコード:

public class Kinematics extends ActionBarActivity {
static EditText tval, aval, vval, xval;
static double a, t, x, v;
static DecimalFormat fmt = new DecimalFormat("###,###.###");

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.klayout);
    CheckBox cb1 = (CheckBox) findViewById(R.id.Check1);
    tval = (EditText) findViewById(R.id.time);
    aval = (EditText) findViewById(R.id.accel);
    vval = (EditText) findViewById(R.id.velocity);
    xval = (EditText) findViewById(R.id.xpos);
    cb1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

        @Override
        public void onCheckedChanged(CompoundButton checkbox, boolean isChecked) {
            if (isChecked) {
                tval.setHint("YAY");
            } else {
                tval.setHint("UNYAY");
            }
        }
    });
}

解決済み

私は設定を使用していたので、次のコードが必要でした:

PreferenceManager.setDefaultValues(this, R.xml.preferences, true);
    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
    boolean disp = prefs.getBoolean("PREF_SHOW_UNITS", true);
    if(disp)
        tval.setHint("t(s)");
    tval.setHint("t(s)");
    else if(!disp)
        tval.setHint("UNYAY");
4

2 に答える 2

0

次の方法で、チェックボックスのチェックで編集テキストのヒントを変更できます。

your_checkbox.setOnCheckedChangeListener(new OnCheckedChangeListener() {

        @Override
        public void onCheckedChanged(CompoundButton checkbox,
                boolean isChecked) {
            // TODO Auto-generated method stub
             if (isChecked)
             {
             your_edittext.setHint(textonChecked);
             }
             else
             { 
             your_edittext.setHint(textonUnchecked);
             }  
        }
    });
于 2014-12-13T04:58:35.017 に答える