Java Android,根据checkBoxPreference更改EditText
我正在尝试向我的应用程序添加基本设置。如果复选框未选中,我想在我的一个活动中更改EditText的提示 preferences.xmlJava Android,根据checkBoxPreference更改EditText,java,android,android-preferences,checkboxpreference,Java,Android,Android Preferences,Checkboxpreference,我正在尝试向我的应用程序添加基本设置。如果复选框未选中,我想在我的一个活动中更改EditText的提示 preferences.xml <?xml version="1.0" encoding="utf-8"?> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> <CheckBoxPre
<?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>
我正在尝试向其添加更改的代码:
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");
您可以通过以下方式更改edittext on复选框复选框的提示:
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);
}
}
});
欢迎来到堆栈溢出!最好是使用内置的代码格式将代码复制为文本,而不是依赖图像。@Nathantugy Oops,出于某种原因,我一直认为人们在发布图片,但我没有注意到这个选项。谢谢在代码中用cb1替换_复选框,用tval替换_edittext,并删除已实现的setOnCheckedChangeListener,如果它有助于您接受answer@PramodYadav我已经更改了变量以匹配我的代码。删除setOnCheckedChangeListener到底是什么意思?我只是说你只能用我的代码中提到的方法使用一次。我担心你会使用我的版本和你的版本,这两个版本都会引起问题。谢谢你的回答,但是我对如何使用这个有点困惑。我将其放在onCreate中,当我打开活动时,应用程序崩溃。
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);
}
}
});
//Get EditText
EditText editText1 = (EditText) findViewById(R.id.editText1);
//Get Checkbox
CheckBox cb1 = (Checkbox) findViewById(R.id.checkBox1);
//Add Listener to Checkbox
cb1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(isChecked) {
//Set a hint to EditText
editText1.setHint("This is a hint!");
}
}
});