gpt4 book ai didi

java - 从自定义 DialogPreference 中检索值并保存值

转载 作者:行者123 更新时间:2023-11-29 08:58:35 25 4
gpt4 key购买 nike

尝试编写自定义对话框首选项(NumberPickerDialog)。尽管 android 文档详细介绍了这个主题,但我似乎错过了他们文档中的一些基本构建 block 。

到目前为止,我所拥有的是一个显示在设置 Activity 中的自定义首选项对话框。我可以单击首选项并填写一个值,然后按确定/取消。

自定义布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<EditText
android:id="@+id/editTextNumberPickerValue"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />

</LinearLayout>

NumberPickerDialog(进行中...):

public class NumberPickerPreference extends DialogPreference {

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

setDialogLayoutResource(R.layout.numberpicker_dialog);
setPositiveButtonText(android.R.string.ok);
setNegativeButtonText(android.R.string.cancel);
setDialogIcon(null);
setPersistent(false);
}

@Override
protected void onBindDialogView(View view) {
super.onBindDialogView(view);
}

@Override
protected void onDialogClosed(boolean positiveResult) {
if (positiveResult) {
Editor editor = getEditor();
persistInt( value??? );
}
}
}

Preference.xml 扩展为:

<com.cleancode.utils.numberpickerpreference.NumberPickerPreference
android:defaultValue="550"
android:key="prefLongFlashDuration"
android:summary="@string/long_flash_duration_summary"
android:title="@string/long_flash_duration" />

我怎样才能:

  • 实际显示默认值 550?
  • 从对话框中检索值?
  • 强制只输入整数值?

我希望有人能对此有所启发,可怜的 Android 文档在这个主题上并不是一个新的友善的人。

非常感谢。

最佳答案

在 Google 的文档中,他们对包含 新值(value)

In this example, mNewValue is a class member that holds the setting's current value.

因此看来您必须依赖成员字段来跟踪包含您的新值的 View 。我是这样解决的

private EditText newPasswordField;

@Override
protected void onBindDialogView(View view) {
super.onBindDialogView(view);

newPasswordField = view.findViewById(R.id.new_password_field);
}

所以基本上,您重写了一个方法,该方法可以让您保留对包含新设置值的任何元素的引用

然后你做你已经拥有的:提取新值

@Override
protected void onDialogClosed(boolean positiveResult) {
Log.i(TAG, "Password dialog closed. Result = " + positiveResult);

if (positiveResult) {
persistString(newPasswordField.getText().toString());
}
}

关于java - 从自定义 DialogPreference 中检索值并保存值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18867649/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com