我在 Android 动态壁纸应用中有如下偏好。(这些是复选框)。我想在此列表中添加指向 Facebook 页面的链接。在网上查看 Android PreferenceCategory 时,我看不到“LinkPreference”或“ButtonPreference”之类的东西,但话又说回来,链接或按钮并不是真正的偏好,所以也许我正在尝试安装一个方形钉一个圆孔。这可能吗?如果可以,怎么做?
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
android:title="@string/livewallpaper_settings">
<PreferenceCategory android:title="@string/livewallpaper_settings" >
<CheckBoxPreference
android:defaultValue="true"
android:key="showred"
android:summary="Display red."
android:title="Display red" />
<CheckBoxPreference
android:defaultValue="true"
android:key="showgreen"
android:summary="Display green."
android:title="Display green" />
</PreferenceCategory>
</PreferenceScreen>
之前有人问过这个问题: Android Add Link to a preference activity - how? 但没有回答。
[编辑]所以现在有下面的代码。它确实会转到 Facebook,但只有在首先单击其中一个复选框首选项之后。
在 livewallpaper_settings.xml 中:
<PreferenceCategory android:title="@string/livewallpaper_settings" >
<Preference
android:key="facebook"
android:summary="@string/facebook"
android:title="@string/facebook" />
</PreferenceCategory>
LiveWallpaperSettings.java:
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { Log.d("LiveWallpaperSettings.onSharedPreferenceChanged()", "key:" + key); 最终偏好 mypref = (Preference) findPreference("facebook"); mypref.setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference arg0) {
Log.d("LiveWallpaperSettings", "mypref: " + mypref.getKey());
if (mypref.getKey().equals("facebook")) {
Log.d("LiveWallpaperSettings", "LINK TO FACEBOOK");
openWebURL("http://www.facebook.com");
return false;
}
return false;
} });
return;
}
public void openWebURL( String inURL ) {
Log.d("openWebURL", inURL);
Intent browse = new Intent( Intent.ACTION_VIEW , Uri.parse( inURL ) );
startActivity( browse );
}