如何在if语句中使用SharedPreferences?

时间:2015-06-27 19:21:51

标签: android if-statement opengl-es sharedpreferences preferences

我一直在使用偏好和SharedPreferences,我是初学者。所以我有一个XML文档,它有一个复选框首选项:

 <CheckBoxPreference
        android:key="@string/touch"
        android:title="@string/adjust_rotation_speed"
        android:summary="Check if you want to adjust the rotation speed"
        android:defaultValue="false"/>

我想写一个if()语句来调整对象的旋转角度。我知道在这种情况下使用列表首选项或其他类型的首选项可能会更好,但我只是想先了解首选项。这是if语句:

 //Draw Bottom Prism
gl.glPushMatrix();
gl.glScalef(0.3f, 0.3f, 0.3f);
gl.glTranslatef(0f, -8f, 0.2f);
if(prefs.getBoolean(keyRotation, false)) {
    gl.glRotatef(angle, 0, 3, -3);
}else {
    gl.glRotatef(angle, 0, -3, 0);
}
triangle.draw(gl);
gl.glPopMatrix();

keyRotation是我的关键值public static final String keyRotation = "touch"; 和prefs是我的SharedPreference变量SharedPreferences prefs;。我想知道如何编写if语句,因此每次用户选中复选框时,旋转角度为gl.glRotatef(angle, 0, 3, -3);,每次用户取消选中时,旋转角度为gl.glRotatef(angle, 0, -3, 0);。非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

中添加android:onClick="FunctionName"
<CheckBoxPreference
    android:key="@string/touch"
    android:onClick="FunctionName"
    android:title="@string/adjust_rotation_speed"
    android:summary="Check if you want to adjust the rotation speed"
    android:defaultValue="false"/>
在XML文件中

并在相应的活动中添加此功能:

public void FunctionName(View v)
{
    if(prefs.getBoolean(keyRotation, false)) {
        gl.glRotatef(angle, 0, 3, -3);
    }
    else {
        gl.glRotatef(angle, 0, -3, 0);
    }
}

每次用户点击FunctionName时,都会调用函数CheckBoxPreference