- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试在关闭另一个切换按钮后将首选项屏幕中的切换按钮切换为 false。所以在这里,当时间翻转时,我想关闭名称。然而它爆炸了。有人看到我做错了什么吗?
import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
import android.os.Bundle;
import android.preference.PreferenceActivity;
import android.widget.Toast;
import android.widget.ToggleButton;
public class UserSettingActivity extends PreferenceActivity implements OnSharedPreferenceChangeListener{
SharedPreferences mPreferences;
Boolean frequency;
@SuppressWarnings("deprecation")
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.settings);
}
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
boolean mBool = false;
if (key.equals("cervical_mucus")) {
// do something
Context context = getApplicationContext();
Toast.makeText(context, "Hello toast 1!", Toast.LENGTH_LONG).show();
ToggleButton mToggle = (ToggleButton)findViewById(R.id.mucus_stamps);
mToggle.setChecked(mBool);
}
}
protected void onPause()
{
super.onPause();
getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
}
protected void onResume()
{
super.onResume();
getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
}
}
错误:
05-09 14:40:18.914: E/AndroidRuntime(25005): FATAL EXCEPTION: main
05-09 14:40:18.914: E/AndroidRuntime(25005): java.lang.NullPointerException
05-09 14:40:18.914: E/AndroidRuntime(25005): at com.projectcaruso.naturalfamilyplaning.UserSettingActivity.onSharedPreferenceChanged(UserSettingActivity.java:37)
05-09 14:40:18.914: E/AndroidRuntime(25005): at android.app.SharedPreferencesImpl$EditorImpl.notifyListeners(SharedPreferencesImpl.java:475)
05-09 14:40:18.914: E/AndroidRuntime(25005): at android.app.SharedPreferencesImpl$EditorImpl.apply(SharedPreferencesImpl.java:385)
05-09 14:40:18.914: E/AndroidRuntime(25005): at android.preference.Preference.tryCommit(Preference.java:1349)
05-09 14:40:18.914: E/AndroidRuntime(25005): at android.preference.Preference.persistBoolean(Preference.java:1615)
05-09 14:40:18.914: E/AndroidRuntime(25005): at android.preference.TwoStatePreference.setChecked(TwoStatePreference.java:83)
05-09 14:40:18.914: E/AndroidRuntime(25005): at android.preference.SwitchPreference$Listener.onCheckedChanged(SwitchPreference.java:54)
05-09 14:40:18.914: E/AndroidRuntime(25005): at android.widget.CompoundButton.setChecked(CompoundButton.java:126)
05-09 14:40:18.914: E/AndroidRuntime(25005): at android.widget.Switch.setChecked(Switch.java:666)
05-09 14:40:18.914: E/AndroidRuntime(25005): at android.widget.CompoundButton.toggle(CompoundButton.java:87)
05-09 14:40:18.914: E/AndroidRuntime(25005): at android.widget.CompoundButton.performClick(CompoundButton.java:99)
05-09 14:40:18.914: E/AndroidRuntime(25005): at android.view.View$PerformClick.run(View.java:17355)
05-09 14:40:18.914: E/AndroidRuntime(25005): at android.os.Handler.handleCallback(Handler.java:725)
05-09 14:40:18.914: E/AndroidRuntime(25005): at android.os.Handler.dispatchMessage(Handler.java:92)
05-09 14:40:18.914: E/AndroidRuntime(25005): at android.os.Looper.loop(Looper.java:137)
05-09 14:40:18.914: E/AndroidRuntime(25005): at android.app.ActivityThread.main(ActivityThread.java:5041)
05-09 14:40:18.914: E/AndroidRuntime(25005): at java.lang.reflect.Method.invokeNative(Native Method)
05-09 14:40:18.914: E/AndroidRuntime(25005): at java.lang.reflect.Method.invoke(Method.java:511)
05-09 14:40:18.914: E/AndroidRuntime(25005): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
05-09 14:40:18.914: E/AndroidRuntime(25005): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
05-09 14:40:18.914: E/AndroidRuntime(25005): at dalvik.system.NativeStart.main(Native Method)
编辑:
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
<PreferenceCategory
android:title="@string/pref_user_profile"
android:textSize="20px">
<SwitchPreference
android:title="@+string/pref_frequency"
android:summary="@+string/pref_frequency_summary"
android:key="frequency"
android:defaultValue="true"
android:layout="@layout/pref_layout"/>
<SwitchPreference
android:title="@+string/pref_time"
android:summary="@+string/pref_time_summary"
android:key="time"
android:defaultValue="true"
android:layout="@layout/pref_layout"
android:dependency="frequency"/>
<SwitchPreference
android:title="@+string/pref_symptothermal"
android:summary="@+string/pref_symptothermal_summary"
android:key="symptothermal"
android:defaultValue="true"
android:layout="@layout/pref_layout"/>
<SwitchPreference
android:title="@+string/pref_cervical_mucus"
android:summary="@+string/pref_cervical_mucus_summary"
android:key="cervical_mucus"
android:defaultValue="true"
android:layout="@layout/pref_layout"
android:disableDependentsState="false"/>
<SwitchPreference
android:id="@+id/mucus_stamps"
android:title="@+string/pref_mucus_stamps"
android:summary="@+string/pref_mucus_stamps_summary"
android:key="mucus_stamps"
android:defaultValue="true"
android:layout="@layout/pref_layout"
android:dependency="cervical_mucus"/>
<SwitchPreference
android:title="@+string/pref_fertile_infertile"
android:summary="@+string/pref_fertile_infertile_summary"
android:key="fertile_infertil"
android:defaultValue="true"
android:layout="@layout/pref_layout"
android:dependency="cervical_mucus"/>
</PreferenceCategory>
</PreferenceScreen>
最佳答案
您可以使用 findPreference
并传递其 android:key
获取对您的 SwitchPreference
的引用:
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
boolean mBool = false;
if (key.equals("cervical_mucus")) {
// do something
Context context = getApplicationContext();
Toast.makeText(context, "Hello toast 1!", Toast.LENGTH_LONG).show();
SwitchPreference switchPreference = (SwitchPreference) findPreference("mucus_stamps");
switchPreference.setChecked(mBool);
}
}
您似乎也没有在 onPause
中注销您的监听器:
protected void onPause()
{
super.onPause();
getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this);
}
关于android - SharedPreferences setChecked 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16464587/
我在 group 中使用 android:checkableBehavior="single",这个组包含几个项目,这些项目代表内容过滤器,没有默认过滤器(这意味着并不总是必须要选中一个项目,至少是我
我创建了继承自 UIButton 的自定义类。 在那个类中我创建了一个定义为的函数: func setChecked(checked:Bool){ self.checked = c
我正在我的应用中创建安全设置部分。 有 3 个单选按钮,允许用户在密码、TouchID 或什么都不选择之间进行选择。默认情况下,所有单选按钮均未选中。单击单选按钮(例如使用密码)时,代码会检查用户是否
我正在 android studio 中制作游戏,在设计设置选项卡时遇到了问题: 我有一个设置 XML 文件,我可以从主菜单屏幕通过 java 代码访问该文件,并且我想根据共享首选项文件设置复选框。
我正在尝试实现带有切换按钮的 ListView 。一切顺利,问题出在切换按钮的方法 setChecked 上。在向下进入 ListView 时,该按钮会自动设置为自行关闭。我正在使用自定义适配器,这里
我想让我的 android 应用程序使用 switch 语句检查单选按钮。我已经确认传递的字符串与其中一种情况相匹配,但仍然没有检查任何内容。我做错了什么? radioGroup =
我有 32 个复选框,我需要启用所有这些复选框。我可以使用以下方法单独完成它们: CButton* button; button = (CButton *)GetDlgItem(IDC_CHECK1)
我在 Qt 5 中制作了一个小测试程序,并尝试实现一个复选框类,默认情况下复选框被选中。但是,每当我运行该程序时,似乎都没有选中该复选框。以下是代码: 复选框.h: #ifndef CHECK
我有一个 ListView ,每个列表项都包含一个复选框。 我的列表适配器正在按照建议重新使用 View ,因此它必须设置复选框的状态。它通过调用 setChecked() 来完成。这会导致调用我的
当我单击同一 RadioGroup 中的其他 RadioButton 时,我无法取消选中以下动态生成的 RadioButton。 我什至求助于编写自己的处理程序来清除RadioGroup(如下),并尝
我使用radioRealButton做这样的事情 一切正常,如上图所示,当在 onClickbuttonListener 中单击按钮时我可以获取 id 这是我的 xml,我在我的自定义对话框中加载此布
这是我的数组适配器中将设置单选按钮状态的代码: public View getView(int position, View convertView, ViewGroup parent) {
我无法让它工作,我也不明白为什么。 Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void
我想从 Android sqlite 上传到 sql server。上传工作正常。问题是:每个表上传完成,服务返回真/假。如果为真则需要setChecked(true);。这里我用一种方法动态创建了复
我试过setChecked(true) RadioButton rbOk = new RadioButton(this); rbOk.setLayoutParams(ParamWCWC); rbOk.
我正在尝试在关闭另一个切换按钮后将首选项屏幕中的切换按钮切换为 false。所以在这里,当时间翻转时,我想关闭名称。然而它爆炸了。有人看到我做错了什么吗? import android.content
我在 TextView 上使用 onClickListener 来设置复选框上的 setCheck() 并保存一个值,同时清除 itemStateArray 中的最后一个检查项目,这是一个 Spars
我有一个用于排序的菜单项。当用户单击它时,将创建一个带有排序选项的 PopupMenu。 现在我已经为每个项目创建了 RadioButtons,但似乎无法将选定的单选按钮设置为选中状态。我不知道出了什
在我的表单构造函数中,我检查各种成员的状态,然后根据单选按钮的状态用 true 或 false 调用 setChecked。 我原以为这会调用与单选按钮关联的回调/插槽,但它没有或没有工作。例如,我的
在我的 xml 中: 在我的java中: public void onCheckboxClicked(View view) { //CheckBox box = (CheckBox) vie
我是一名优秀的程序员,十分优秀!