2017-11-27 1 views
0

직면 한 edittext 문제에 대한 지원이 필요했습니다. 새로운 사용자가 들어 오면 edittext는 정상적으로 응답합니다. 그러나 일단 사용자가 자신의 세부 정보를 저장하고 응용 프로그램을 종료하고 다시 같은 페이지로 돌아 오면 해당 세부 정보는 해당 편집 텍스트 내에 채워집니다. 이제 문제는 해당 정보가 채워지는 경우 편집 텍스트를 활성화하지 않기를 바란다는 것입니다. 사용자가 edittext의 내용을 변경하기 전에 경고 (경고 대화 상자)를 설정하려고합니다. 사용자가 경고에 '예'라고 표시되면 edittext를 다시 편집 할 수 있기를 원합니다.입력 된 경우 edittext를 비활성화하고 텍스트를 편집하려면 setOnClickListener를 비활성화하십시오.

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"속성을 설정하고 싶지는 않습니다. 왜냐하면 편집 할 텍스트를 표시 할 세부 정보가 없으면 편집 텍스트에 초점을 맞추기를 원하기 때문입니다. 미리 감사 드리며 추가 설명이 필요한 경우 알려 주시기 바랍니다.

답변

0

당신이

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); 
        } 
       }); 
+0

방금이 친구를 시도했지만 여전히 좋지 않습니다. edittext는 어떤 이유로 클릭 할 수 없습니다. 경고 대화 상자가 열리지 않습니다. – Nero

관련 문제