본문 바로가기
Android/Develop

[Android] dismiss()!!AlertDialog는 되고 AlertDialog.Builder은 안되고?!

by hyun's life_developer 2019. 7. 3.

 

안녕하세요~! 초보개발자 시아아빠입니다!

이번 포스팅은 개발 중에 다이얼로그 dismiss( )하여 닫으려 했는데 빨간 줄이 그어지는 상황!!

이런 상황을 겪고계신 분들을 위한 글입니다~!

 

상황에 따라다르지만! 저는 AlertDialog를 쓰기보다 AlertDialog.Builder로 바로 붙여야하는 상황이었어요 ㅠㅠ

 

정말 모든 방법을 동원하여 5시간 만에 다이얼로그를 만들었.........지만!!!! 버튼을 눌러도 닫히지가 않네용 ㅠㅠ

 

dismiss( )로 닫으려 하였지만 ....ㅡ,.ㅡ 무자비하게도 빨간 줄을 '뽝!' 그어버리는 우리 안드님.....

 

이유는 dismiss( )가 AlertDialog는 지원하지만 AlertDialog.Builder에는 없는 메소드라는 사실!! ㅠㅠ

 

다시말해 dimiss함수는 AlertDialog의 메소드이고 Builder클래스에는 없는 메소드이기 때문이에요!

 

그래서!!! 본론으로!! 저는 어떻게 해결했냐면요~!

 

AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(activity.this);
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View viewInDialog = inflater.inflate(layout, null);

dailogBuilder.setView(viewInDialog);    //  여기까지는 참고하세요!!

AlertDialog ad = dialogBuilder.create();  //뭐가 다르다 다르다 했더니~!  아래에 설명있어요
ad.show();

button.setOnClickListener(new View.OnClickListener()
{
	@Override
    public void onClick(View v)
    {
    	TextView text1 = ((TextView) findViewById(R.id.textview));
        ad.dismiss();   //바로 요부분!! 
    }
}
    	

 

보이시나요?? 뭐가 다른가 했더니~!

builder말고 AlertDialog가 추가되었어요!!

 

Q.이유가 뭐에요??

 

 - 위에서 말씀드렸다시피! builder에서는 직접적으로 사용할 수가 없는 메소드에요!

그렇기때문에 생성된 builder의 메인을 담아줄 AlertDialog 객체를 생성해주고! 요기에 builder를 create 해준거에요.

 

쉽게 말해 builder라는 친구는 안되니! AlertDialog 객체를 만들어서 builder친구의(?) create를 해준거라고 보시면 돼요!

 

다시 소스로 돌아와서!

 

그다음 AlerDialog객체의 변수를 ad로 선언해주었구요! 이 ad를 사용해 dismiss( )를 해주면! 고민해결이 된다는 사실~! 

 

 

 

실력 좀 많이 늘어서 능력자가 된다면! 두서있는 포스팅을 쓸텐데...

아직은 부족하여 제가 해결하는 에러에 대한 포스팅만 있네요 ㅠㅠ

 

실력자가 된다면! 여러가지 기술에 대한 두서있는 포스팅을 해볼까 해요~! 

 

많은 도움이 되셨길 바라고! 앞으로도 도움이 되시길 바랍니다!!

 

댓글