繁体   English   中英

Android文档与Android Studio警告不同

[英]Android documentation differs from Android Studio warning

我目前正在实现其中有一个CheckBoxAlertDialog 为了做到这一点,我给一个包含CheckBox的视图充气,然后使用setView(View)方法将其添加到Dialog中,但是通过这种方式,我得到了很大的填充。 根据我的阅读,解决该问题的方法显然是使用setView(View, int, int, int, int)方法(设置所有方向的填充),但是当我尝试实现android studio时给我一个错误(可以通过添加@SuppressLint("RestrictedApi")来避免@SuppressLint("RestrictedApi")但我不知道该怎么做也不意味着什么,所以如果您知道不要犹豫向我解释),然后说该方法已被弃用,很奇怪的是,在文档中( 在此处 ),没有什么可说不赞成使用此方法的,所以我想知道,在这种情况下,我应该信任文档还是androidStudio? (也是使用第二种方法的一个好主意)

这是AlertDialog的代码:

@SuppressLint("RestrictedApi")
@NonNull
@Override
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {

    View checkBoxView = View.inflate(getContext(), R.layout.checkbox, null);
    CheckBox checkBox = (CheckBox) checkBoxView.findViewById(R.id.checkbox_dontaskmeagain);

    checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
            SharedPrefUtils.setShowAlertDialog(getContext(), b);
        }
    });

    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
    builder.setMessage(R.string.alert_everyday_dialog_message);
    builder.setTitle(R.string.alert_dialog_title)
            .setView(checkBoxView, 0, 0, 0, 0) //this apparently is deprecated
            .setPositiveButton(R.string.alert_dialog_delete, new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int id) {
                    mListener.onEverydayDialogPositiveClick(DeleteTaskEverydayDialog.this);
                }
            })
            .setNegativeButton(R.string.alert_dialog_cancel, new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int id) {
                    mListener.onEverydayDialogNegativeClick(DeleteTaskEverydayDialog.this);
                }
            });
    return builder.create();
}

请注意,这是一个自AlertDialog扩展的自定义类,其中还有一些其他功能,但我认为不需要它们,如果您认为有必要,请告诉我,我将提供它们

您正在查看错误的文档-即AlertDialog 您正在调用的代码位于AlertDialog.Builder 它没有任何文档,因为它带有@hide注释,因此不包含在SDK及其文档中。 支持库源中所示,它还具有@RestrictTo@Deprecated批注。

javadoc中给出了一些隐藏的基本原理:

这是当前隐藏的,因为似乎人们应该可以在视图周围放置填充。

一般来说,您不应调用隐藏或受限方法。 寻找其他方式来实现您的目标。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM