我来认为我的问题是与我的偏好没有正确完成是为什么我无法访问模板。下面是我的喜好:Android Prefererences
<?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"
android:layout="@layout/pref_layout">
<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"/>
<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"/>
<SwitchPreference
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"/>
<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"/>
</PreferenceCategory>
</PreferenceScreen>
的Java:
package com.projectcaruso.naturalfamilyplaning;
import com.projectcaruso.naturalfamilyplanning.R;
import android.os.Bundle;
import android.preference.PreferenceActivity;
public class UserSettingActivity extends PreferenceActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.settings);
}
}
这里是我的电话设置菜单:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
final int RESULT_SETTINGS = 1;
switch (item.getItemId()) {
case R.id.projectcaruso:
Util.goToGitHub(this);
return true;
case R.id.about:
new AlertDialog.Builder(this)
.setTitle(R.string.about)
.setMessage(Html.fromHtml(getString(R.string.about_msg)))
.show();
break;
case R.id.licenses:
new AlertDialog.Builder(this)
.setTitle(R.string.licenses)
.setMessage(Html.fromHtml(getString(R.string.license_detail)))
.show();
break;
case R.id.contact:
break;
case R.id.settings:
Intent j = new Intent(this, UserSettingActivity.class);
startActivityForResult(j, RESULT_SETTINGS);
break;
}
return super.onOptionsItemSelected(item);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getSupportMenuInflater().inflate(R.menu.settings, menu);
return true;
}
}
因此,任何帮助,将不胜感激!我试图访问这些偏好,但不能。它似乎在拯救他们就好了。我能够测试并运行代码,更改pref并保存它们的状态。但是,当我尝试访问他们,我不能...这是我用来尝试和访问他们的代码:
编辑: 我已经改变它调用如下,无论设置它仍然是“你好吐司2!“ @Override public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); SharedPreferences preferences = this.getActivity()。getSharedPreferences(“UserSettingActivity”,0); //充气布局对该片段
Boolean symptothermal = preferences.getBoolean("symptothermal", true);
if (!symptothermal) {
Context context = getActivity().getApplicationContext();
Toast.makeText(context, "Hello toast 1!", Toast.LENGTH_LONG).show();
} else {
Context context = getActivity().getApplicationContext();
Toast.makeText(context, "Hello toast 2!", Toast.LENGTH_LONG).show();
}
if (!symptothermal) {
TextView temp = (TextView) getView().findViewById(R.id.temp);
temp.setVisibility(View.GONE);
}
}
片段内的getDefaultSharedPreferences错误...有什么替代方法? – jcaruso 2013-05-08 13:33:33
它没有错误,你只需要通过getActivity()而不是'this' – 2013-05-08 13:34:20
你是男人!显然它工作! – jcaruso 2013-05-08 13:36:43