2010-02-11 2 views
3

화면상의 버튼으로 "대화"테마가있는 활동이 표시됩니다. 버튼을 두 번 연속해서 클릭하면 대화 활동이 두 번 열리는 문제가 있습니다.Android : 대화 형 테마 활동을 모달로 강제 실행

일반적으로 새로운 활동이 시작되면 기본 활동이 즉시 중단되어 더 이상 입력을받지 않을 것으로 예상됩니다.

그러나 대화 주제별 활동이 전체 화면을 차지하지 않으므로 기본 활동이 일시 중지되고 중지되지 않았으므로 버튼에 계속 액세스 할 수 있다고 생각합니다.

내게 묻습니다 ... 대화 상자 테마 활동을 사용자가 아래 활동의 단추를 클릭 할 수없는 모달 상태로 강제하는 방법이 있습니까?

아마도 onPause의 모든 기능을 사용 중지하고 onResume에서 다시 사용하도록 설정하면 수동으로 수행 할 수 있지만 이는 많은 작업처럼 보입니다! 누구나 쉽게 해결할 수 있습니까?

답변

1

실제 해법이없는 경우 해킹과 오류가 발생하는 사용 중지 라인을 따라 가야합니다. 비활성화는 버튼 클릭 이벤트에서 간단히 반환하여 수행 할 수 있습니다. 대화 상자가 반환 될 때 bool을 재설정하거나 onResume에있는 한

boolean clicked; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    Button b = (Button)findViewById(R.id.Button01); 
    b.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      if (clicked) 
       return; 
      clicked = true; 
      // show dialog 
     } 
    }); 
} 
+0

제안 해 주셔서 감사합니다. 그게 실제로 작동, 나는 모든 터치 할 수있는 항목에 대한 사용자 정의 코드를 포함하지 않는 솔루션을 기대하고있다. –

0

다른 해결책은 대화 상자 테마로 작업을 시작하는 것이 아니라 표준 작업으로 시작하는 것입니다. 액티비티를위한 XML에서 전체 화면을 차지하는 텍스트 뷰를 지정하십시오. 그러나 텍스트 뷰를 투명하게 (또는 세미 또는 컬러로 또는 ....) 클릭 할 수있게하십시오.

그런 다음 같은 xml 파일에서 텍스트보기 위에 표시되도록 "대화 상자"를 만드십시오. 이제는 대화 상자처럼 보이고 그 뒤에있는 활동은 계속 볼 수 있지만 대화 상자 외부의 클릭은 투명한 textview에 의해 소비됩니다. 예 :

<TextView android:id="@+id/ViewHider" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="#aa000000" 
    android:enabled="true" 
    android:clickable="true" 
    ></TextView> 

<!-- Then put your "dialog" xmal here --> 
+0

내가 이것을 할 때 배경은 항상 검은 색이어서 나는 아래의 활동을 볼 수 없다. 어떤 제안? – howettl

+0

몇 가지 코드/xml을 게시 할 수 있습니까? 배경색은 기본 액티비티를보기 위해 더 높은 투명도 레벨이 필요할 수 있습니다. (내 머리 꼭대기에서) – Dent