我想,当检测Preference
包含在ListView
被点击,这样我就可以启动一个意图来管理的选择。
我会做这样在我的布局XML
文件:
<Preference android:title="About" android:key="myKey"></Preference>
而在我下面java
代码:
Preference myPref = (Preference) findPreference("myKey");
myPref.setOnPreferenceClickListener(new OnPreferenceClickListener() {
public boolean onPreferenceClick(Preference preference) {
//open browser or intent here
}
});
但该方法public Preference findPreference (CharSequence key)
已被弃用。
- 是否有非弃用相同呢?
- 如果不是,我用它是什么呢?
- 如何
Fragments
帮我做一个更好的办法赤这里我的任务: 首没有不赞成的方法 。
在这里,您可以查看XML
,我的活动都有布局结构,并且应用程序的快照:
XML:
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
<Preference
android:key="about"
android:title="@string/titleAbout"
android:summary="@string/summaryAbout"
/>
<Preference
android:key="labelTaxonomy"
android:title="@string/titleLabelTaxonomy"
android:summary="@string/summaryLabelTaxonomy"
/>
</PreferenceScreen>
快照:
点击关于(或Access标签分类)后Preference
,我想开一个intent
某种(也可以是视频或其他任何...的名称误导)。
是否有非弃用相同呢?
如果您正在使用PreferenceFragment
在API级别11+的设备,你会叫findPreference()
就可以了。 否则,调用findPreference()
在你的PreferenceActivity
,因为你别无选择。
如果不是,我用它是什么呢?
它将工作。
片段如何能帮助我做我的工作在一个更好的办法?
API等级11+介绍PreferenceFragment
作为构建的内容的另一种方式PreferenceActivity
。 欢迎您使用它们,但如果你仍然支持旧设备,则不能使用PreferenceFragment
这些设备。
话虽如此:
我想,当包含在一个ListView偏好被点击进行检测,这样我就可以启动一个意图来管理的选择。
你不需要为这个Java代码。 使用:
<PreferenceScreen
android:title="@string/title_intent_preference"
android:summary="@string/summary_intent_preference">
<intent android:action="android.intent.action.VIEW"
android:data="http://www.android.com" />
</PreferenceScreen>
(如见于JavaDoc中PreferenceActivity
)
这将创建偏好UI的条目,点击后会开始活动与指定的Intent
。
如果您使用的片段,可以在首选项片段的基础上,使用的方法“findPreference()”。
public class CustomActivity extends PreferenceActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_custom);
CustomFragment customFragment = (CustomFragment) getFragmentManager().findFragmentById(R.id.custom_fragment);
EditTextPreference textPreference = (EditTextPreference) customFragment.findPreference("preference_key");
textPreference.setOnPreferenceClickListener(new OnPreferenceClickListener() {
public boolean onPreferenceClick(Preference preference) {
//open browser or intent here
}
});
}
}
也许文档的链接都不清楚。 但是,使用该功能是非常简单的。 例如,你可以使用它作为这样的Twitter页面
<PreferenceCategory android:title="Share" >
<PreferenceScreen
android:title="Twitter"
android:summary="Follow me at Twitter">
<intent android:action="android.intent.action.VIEW"
android:data="https://twitter.com/" />
</PreferenceScreen>
</PreferenceCategory>
它并不需要任何Java代码。 感谢CommonsWare!
2018 UPDATE今天, onPreferenceTreeClick
方法具有用于此目的的优选片段被重写。 例如:
public class MySettingsFragment extends PreferenceFragment {
@Override
public boolean onPreferenceTreeClick (PreferenceScreen preferenceScreen,
Preference preference)
{
String key = preference.getKey();
if(key.equals("someKey")){
// do your work
return true;
}
return false;
}
}