public api com.android.internal.r Android numberpicker



嗨,我正在制作一个启动器一切都很好但是我想向启动器添加一些选项,并且需要一个数字选择器所以我以投石机的来源为例

但这给了我 1 个错误我无法导入com.android.internal.R
com.android.r 是私有的,但我不知道公共 API 来修复它希望有人可以帮助我这是代码

public class NumberPickerPreference extends DialogPreference {
   private int mMin, mMax, mDefault;
    private String mMaxExternalKey, mMinExternalKey;
    private NumberPicker mNumberPicker;
    public NumberPickerPreference(Context context, AttributeSet attrs) {
        super(context, attrs);
        TypedArray dialogType = context.obtainStyledAttributes(attrs,
                com.android.internal.R.styleable.DialogPreference, 0, 0);
        TypedArray numberPickerType = context.obtainStyledAttributes(attrs,
                R.styleable.NumberPickerPreference, 0, 0);
       mMaxExternalKey =      numberPickerType.getString(R.styleable.NumberPickerPreference_maxExternal);
        mMinExternalKey =   numberPickerType.getString(R.styleable.NumberPickerPreference_minExternal);
        mMax = numberPickerType.getInt(R.styleable.NumberPickerPreference_max, 5);
        mMin = numberPickerType.getInt(R.styleable.NumberPickerPreference_min, 0);
        mDefault =  dialogType.getInt(com.android.internal.R.styleable.Preference_defaultValue, mMin);
        dialogType.recycle();
        numberPickerType.recycle();
    }
    @Override
    protected View onCreateDialogView() {
        int max = mMax;
        int min = mMin;
        // External values
        if (mMaxExternalKey != null) {
            max = getSharedPreferences().getInt(mMaxExternalKey, mMax);
        }
        if (mMinExternalKey != null) {
            min = getSharedPreferences().getInt(mMinExternalKey, mMin);
         }
         LayoutInflater inflater =
                (LayoutInflater)     getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View view = inflater.inflate(R.layout.number_picker_dialog, null);
       mNumberPicker = (NumberPicker) view.findViewById(R.id.number_picker);
       // Initialize state
       mNumberPicker.setMaxValue(max);
       mNumberPicker.setMinValue(min);
       mNumberPicker.setValue(getPersistedInt(mDefault));
       mNumberPicker.setWrapSelectorWheel(false);
    // No keyboard popup
        EditText textInput = (EditText)   NumberPicker.findViewById(com.android.internal.R.id.numberpicker_input);
        textInput.setCursorVisible(false);
        textInput.setFocusable(false);
        textInput.setFocusableInTouchMode(false);
         return view;
    }
    @Override
    protected void onDialogClosed(boolean positiveResult) {
        if (positiveResult) {
            persistInt(mNumberPicker.getValue());
        }
    }
}

尝试

int id = Resources.getSystem().getIdentifier("numberpicker_input", "id", "android");

您无法在编译时访问 com.android.internal.R 的 id,但您可以在运行时访问内部资源并按名称获取资源。您应该知道,这比直接访问慢,并且不能保证内部资源在未来版本的 android 中可用。

最新更新