Android系统对话框——自定义关闭,面试字节跳动两轮后被完虐

40 阅读2分钟
    initDialog(context);

}



private void initDialog(Context context) {



    View viewChangeUser = View.inflate(context, R.layout.view_mydialog, null);

    mAutoCompleteTextView = (AutoCompleteTextView) viewChangeUser.findViewById(R.id.autoCompleteTextView);



    setTitle("自定义Dialog");

    setView(viewChangeUser);

    setPositiveButton("确定", null);

    setNegativeButton("取消", null);

    mDialog = create();

    mDialog.show();

    // 自定义Positive按钮 实现点击以后不自定隐藏Dialog

    setPositiveButton();

}



/**

 * 在我们重新自定义PositiveButton的点击事件的时候,一定要保证之前添加了 PositiveButton

 * 就是 setPositiveButton("确定", null);

 * 不然下面的 getButton(AlertDialog.BUTTON_POSITIVE); 会报空指针

 */

public void setPositiveButton() {

    Button positiveButton = mDialog.getButton(AlertDialog.BUTTON_POSITIVE);

    positiveButton.setOnClickListener(new View.OnClickListener() {

        @Override

        public void onClick(View v) {

            // 测试

            if (TextUtils.isEmpty(mAutoCompleteTextView.getText().toString())) {

                mAutoCompleteTextView.setError("密码不能为空");

            } else {

                Toast.makeText(getContext().getApplicationContext(), "修改成功", Toast.LENGTH_SHORT).show();

                mDialog.dismiss();

            }

        }

    });

}

// public void setDialogOnClickListener(DialogOnClickListener listener) {

// mDialogOnClickListener = listener;

// }

}





### View(参考)



<RelativeLayout xmlns:android="schemas.android.com/apk/res/and…"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:orientation="horizontal">



<android.support.design.widget.TextInputLayout

    android:layout_width="match_parent"

    android:layout_height="wrap_content">



    <AutoCompleteTextView

        android:id="@+id/autoCompleteTextView"

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:layout_margin="@dimen/x45"

        android:hint="修改密码" />



</android.support.design.widget.TextInputLayout>




### 使用(参考)



public void myDialog(View view) {

new MyDialog(this);

}





### 接口回调(参考)




> 如果点击按钮以后,有一些操想要在主类操作,可以添加一个接口回调



package ……;

/**

  • Created by kqw on 2016/4/14.

  • Dialog回调接口

*/

public interface DialogOnClickListener {

public void onPositiveButton();

总结

【Android 详细知识点思维脑图(技能树)】

image

其实Android开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。

虽然 Android 没有前几年火热了,已经过去了会四大组件就能找到高薪职位的时代了。这只能说明 Android 中级以下的岗位饱和了,现在高级工程师还是比较缺少的,很多高级职位给的薪资真的特别高(钱多也不一定能找到合适的),所以努力让自己成为高级工程师才是最重要的。

这里附上上述的面试题相关的几十套字节跳动,京东,小米,腾讯、头条、阿里、美团等公司19年的面试题。把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节。

由于篇幅有限,这里以图片的形式给大家展示一小部分。

详细整理在GitHub:Android架构视频+BAT面试专题PDF+学习笔记​

网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。