首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android: PreferenceScreen中的TimePicker :向TimePicker发送数据

Android: PreferenceScreen中的TimePicker :向TimePicker发送数据
EN

Stack Overflow用户
提问于 2013-03-04 20:41:44
回答 1查看 1.4K关注 0票数 1

我有一个PreferenceScreen,其中有3个首选项是TimePreferencesTimePreference是一个扩展DialogPreference的自定义类,它包含一个TimePicker。我在THIS CODE之后创建的。

现在我想限制TimePicker输入。每个TimePreference都需要有一个特定的时间限制(这个限制在每个TimePreference中是不同的),我将使用这个限制来检查输入值。也就是说,我可能希望第一个TimePreference低于1小时,第二到5个小时,最后一个没有限制。

因为我想避免有3个不同的类,所以我正在寻找一种方法来发送一些数据到首选项。我尝试使用defaultValue,但当用户已经选择了任何值时,它是null。

我的PreferenceActivity使用PreferenceFragment。这是他们的代码:

代码语言:javascript
复制
public class PrefsActivity extends Activity {

@SuppressLint("NewApi")
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    getFragmentManager().beginTransaction().replace(android.R.id.content,
            new PrefsFragment()).commit();
}

}

public class PrefsFragment extends PreferenceFragment {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    addPreferencesFromResource(R.xml.prefs_tod);
}

}

我可以将此数据发送到首选项吗?或者我应该有3个不同的类?

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-04 21:28:14

您可以使用其他属性创建自定义首选项,在本例中使用limit属性。

res/values/attrs.xml

代码语言:javascript
复制
<declare-styleable name="CustomPreference">
    <attr name="limit" format="integer"/>
</declare-styleable>

CustomPreference.java

代码语言:javascript
复制
public class CustomPreference extends DialogPreference {
private int limit;

public CustomPreference(Context context, AttributeSet attrs) {
    super(context, attrs);

    TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.CustomPreference, 0, 0);
    limit = a.getInteger(R.styleable.CustomPreference_limit, 0);

    a.recycle();
}

在首选项布局中:

代码语言:javascript
复制
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" 
   xmlns:app="http://schemas.android.com/apk/res/com.example.package">
    <PreferenceCategory>
        <com.example.package.CustomPreference
        android:key="@string/pref_key"
            android:title="@string/pref_title"
            app:limit="6" />
    </PreferenceCategory>
</PreferenceScreen>

您还可以通过编程方式设置属性值

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15201853

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档