【问题标题】:Disable edittext if populated and setOnClickListener to edit the text如果填充和 setOnClickListener 则禁用 edittext 以编辑文本
【发布时间】:2017-11-27 18:37:01
【问题描述】:

我需要帮助解决我面临的编辑文本问题。当有新用户进来时,edittext 会正常响应。但是,一旦用户保存了他/她的详细信息并退出应用程序并返回到同一页面;它们的详细信息将填充在相​​应的编辑文本中。现在的问题是,如果填充了他们的信息,我不希望启用编辑文本。我想在用户更改编辑文本中的内容之前设置一个警告(警报对话框)。如果用户对警告点击“是”,我希望 edittext 再次可编辑。

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_personal__information);

    fName = findViewById(R.id.personal_info_fName_ET);
    lName = findViewById(R.id.personal_info_lName_ET);
    userAge = findViewById(R.id.personal_info_userAge_ET);
    userPhone = findViewById(R.id.personal_info_userPhone_ET);

    getInfo();

    fName.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View view, MotionEvent motionEvent) {
            AlertDialog alertDialog = new AlertDialog.Builder(
                    Personal_Information.this).create();
            alertDialog.setTitle("Make Changes");
            alertDialog.setMessage("Do you want to make these changes?");
            alertDialog.setButton(AlertDialog.BUTTON_POSITIVE, "YES",
                    new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialogInterface, int i) {
                            //fName.setFocusable(true);
                        }
                    });
            alertDialog.setButton(AlertDialog.BUTTON_NEGATIVE, "NO",
                    new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialogInterface, int i) {
                            dialogInterface.dismiss();
                        }
                    });
            return false;
        }
    });

    submit = findViewById(R.id.personal_info_submit_btn);

    submit.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            seralizePersonalInfo("Users Personal Info");
        }
    });
}

我想禁用“getInfo”方法中的edittext并使用onClick方法启用它。

public void getInfo(){
    if (CurrentUserInfo.getFirstname() != null){
        fName.setText(CurrentUserInfo.getFirstname());
        lName.setText(CurrentUserInfo.getLastname());
        userAge.setText(CurrentUserInfo.getUserAge());
        userPhone.setText(CurrentUserInfo.getUserPhone());
    }
}

我尝试过可聚焦、禁用但 onClickListener 没有任何响应。我不想在 XML“focuseable = false”中设置属性,因为如果没有要显示的详细信息,我希望编辑文本被聚焦。 提前致谢,如果您需要进一步说明,请告诉我。

【问题讨论】:

    标签: java android android-edittext


    【解决方案1】:

    您可以使用以下方法来实现这一点

    public void getInfo(){
        if (CurrentUserInfo.getFirstname() != null){
            fName.setText(CurrentUserInfo.getFirstname());
            lName.setText(CurrentUserInfo.getLastname());
            userAge.setText(CurrentUserInfo.getUserAge());
            userPhone.setText(CurrentUserInfo.getUserPhone());
            //do same for all edit text            
            fName.setKeyListener(null);
            fName.setLongClickable(false);
         }
    }
    

    如果你想启用它,只需给他们一个新的回调引用。

     BaseKeyListener mBaseKeyListener = new BaseKeyListener() {
        @Override
        public int getInputType() {
            return 0;
        }
    };
    
    alertDialog.setButton(AlertDialog.BUTTON_POSITIVE, "YES",
                    new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialogInterface, int i) {
                            //do same for all edit text            
                            fName.setKeyListener(mBaseKeyListener);
                            fName.setLongClickable(true);
                        }
                    });
    

    【讨论】:

    • 刚试过这个伙伴,还是不好。由于某些原因,edittext 不可点击。它不会打开警报对话框。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-18
    • 1970-01-01
    • 2020-09-22
    • 1970-01-01
    • 2011-10-07
    • 1970-01-01
    相关资源
    最近更新 更多