【问题标题】:public api com.android.internal.r Android numberpicker公共 api com.android.internal.r Android numberpicker
【发布时间】:2012-12-14 15:59:20
【问题描述】:

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

但这给了我 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());
        }
    }

}

【问题讨论】:

    标签: android launcher


    【解决方案1】:

    试试

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

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

    【讨论】:

      猜你喜欢
      • 2012-08-01
      • 2020-09-22
      • 2015-04-30
      • 2013-05-11
      • 1970-01-01
      • 1970-01-01
      • 2014-01-24
      • 2016-09-30
      • 1970-01-01
      相关资源
      最近更新 更多