2013-08-22 3 views
14

내 응용 프로그램에 대한 모달 대화 상자를 만들고 싶습니다.안드로이드에서 모달 대화 상자를 만드는 방법

모달 대화 상자를 열면 다른 활동이 차단됩니다. 뒤로 버튼 누름 또는 홈 버튼 누름과 같은 이벤트는 수행되지 않습니다.

두 개의 옵션 버튼을 대화 상자에 넣고 취소하고 확인하십시오.

+1

시도한 코드를 표시 할 수 있습니까? –

+0

내 질문이 옳다. 그래서 어떤 부정 투표가 내게 준 것인가. –

+0

나는 downvote하지 않았다! 그냥 코드를 물었다. –

답변

26

안드로이드에서 Dialogs 많은 종류가 있습니다 ... 감사합니다. Dialogs을보십시오. 당신이 찾고있는 것이 같아요. AlertDialog입니다. 이것은 BackPress 버튼에 구현할 수있는 방법의 예입니다.

@Override 
public void onBackPressed() { 
    AlertDialog.Builder alert = new AlertDialog.Builder(this); 
    alert.setTitle("Do you want to logout?"); 
    // alert.setMessage("Message"); 

    alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int whichButton) { 
      //Your action here 
     } 
    }); 

    alert.setNegativeButton("Cancel", 
     new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int whichButton) { 
      } 
     }); 

    alert.show(); 

} 
+0

코드 덕분에 감사하지만 홈 키 프레스에서 구현하는 방법. –

+0

왜 이것을'HOME' 키에 구현하고 싶습니까? 귀하의 심판을위한 링크. http : // stackoverflow.co.kr/questions/4783960/call-method-when-home-button-on-android & http://stackoverflow.com/questions/2079691/overriding-the-home-button-how-do-i-get- 선택 해제 –

+0

다행히도 'HOME'키를 눌러도 처리 할 수 ​​없습니다. 그것은 응용 프로그램이 추악한 것들을 할 수 있습니다. –

5

이 시도 ::

당신은 당신이 팝업에 표시 할 레이아웃을 작성해야합니다. 당신은 레이아웃 XML을 생성하고 다음과 같이 사용할 수 있습니다 : 당신은이 같은 버튼의 이벤트를 클릭하여 제공 할 수 있습니다

LayoutInflater layoutInflater = (LayoutInflater)getBaseContext().getSystemService(LAYOUT_INFLATER_SERVICE); 
      View layout = layoutInflater.inflate(R.layout.new_popup_layout, null); 
      final PopupWindow popupWindow = new PopupWindow(
        layout, 
         LayoutParams.WRAP_CONTENT, 
          LayoutParams.WRAP_CONTENT); 

:

ImageButton btnChoose = (ImageButton) layout.findViewById(R.id.btnChoose); 
      btnChoose.setOnClickListener(new OnClickListener() { 

       @Override 
       public void onClick(View v) { 
} 
}); 

과 같은이 팝업을 보여 여기 당신이이 보여주고 싶은 버튼 클릭 후 버튼보기가 나타납니다.

popupWindow.showAtLocation(anyview,Gravity.CENTER, 0, 0); 
9

사용 가능 setCancellable (false); setCanceledOnTouchOutside (false); 대화 상자 자체에 대해, 그 대화 상자가 BACK으로 닫히지 않도록하고 대화 상자 바깥을 탭해야합니다.

홈 버튼을 재정의 할 수 없습니다.

+1

사실, 응용 프로그램을 "실행기"로 만들어 홈 버튼을 무시할 수 있습니다. – Wildcopper

5

다음과 같이 해보세요 : 홈 키 이벤트의

AlertDialog.Builder builder = new AlertDialog.Builder(this); 
builder.setMessage("Are you sure you want to exit?") 
    .setCancelable(false) 
    .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() { 
    public void onClick(DialogInterface dialog, int id) { 
     MyActivity.this.finish(); 
    } 
}) 
.setNegativeButton(android.R.string.no, new DialogInterface.OnClickListener() { 
    public void onClick(DialogInterface dialog, int id) { 
     dialog.cancel(); 
    } 
}); 
AlertDialog alert = builder.create(); 

을 :

이 아니, 안드로이드의 홈 키 이벤트를 얻을 수 없습니다. 홈 키 코드의 문서에서 : http://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_HOME

공공 정적 최종 INT의 KEYCODE_HOME

키 코드 상수 : 홈 키를 누릅니다. 이 키는 프레임 워크에서 처리하고 은 응용 프로그램으로 전달되지 않습니다.

+0

빠른 메모 : "예"및 "아니요"문자열을 하드 코딩하지 않을 수도 있습니다. 대신 android.R.string.yes 및 android.R.string.no와 같은 정적 리소스를 사용할 수 있습니다. –

관련 문제