2014-09-03 3 views
0

내 응용 프로그램에는 사용자가 단추를 누를 때 사용자 지정 DialogFragment을 표시하는 단추가 있습니다. DialogFragment은 다음과 같이 표시됩니다 : 사용자가 dismiss을 완료동일한 DialogFragment를 두 번 이상 표시하는 방법

if(searchDialog == null) 
    { 
     searchDialog = new SearchElementDialog(); 
     searchDialog.setOnItemClickListener(searchElementItemClickListener); 
    } 

    searchDialog.show (getFragmentManager(), "SearchElement"); 

일반적인 방법으로 호출되고 대화 상자가 제거됩니다. 이제 사용자가 동일한 버튼을 다시 누르면 동일한 대화 상자가 표시됩니다. 사용자가 왼쪽과 동일한 표시 상태에서 위의 첫 번째 블록에서 코드를 호출하면 대화 상자가 표시되고 시각 상태가 복원되지만 :

화면이 흐리게 표시되지 않고 대화 상자 외부를 누르면이를 닫지 않고 아무 것도 응답하지 않는 컨트롤입니다.

소프트 키 보드가 나타나면 대화 상자가 움직이지 않습니다.

처음에는 모든 것이 정상입니다. 대화 상자의 동일한 인스턴스를 다시 표시 할 수 있습니까?

답변

1

전체 조각 대신 대화 상자를 숨기고 표시하면 어떨까요?

searchDialog.getDialog().dismiss(); 

을 당신이 그것을 보여주고 싶은 경우 :

searchDialog.getDialog().show(); 
+0

나는 이것이 작동하지 않을까 걱정됩니다. 대화 상자가 이미 표시되어 있지 않으면 getDialog가 null을 반환하므로 show를 호출하는 데 사용할 수 없습니다. getDialog(). dismiss() 및 searchDialog.show()를 호출하면 결과가 동일합니다. – CurlyPaul

+0

@CurlyPaul 네가 인스턴스화 할 때 네가 자동으로 보이지만 네가'getDialog(). dismiss()'로 숨길 때'getDialog.show()'로 나중에 보여줄 수있을 것이라 확신한다. – Simas

0

Simas 부분적으로 옳았다

당신이 전화를 기각 할

. Dialog이 표시되면 은 null을 반환하지 않지만 Dialog이 표시되지 않으면 표시됩니다. 나는 내 수업

mDialog = getDialog()

의 필드로 저장되고 이후 모든 시간을 일

mDialog.show()

을했다.

관련 문제