현재 위치 - 중국 분류 정보 발표 플랫폼 - 비즈니스 서비스 정보 - AlertDialog 해제 및 취소 메소드의 차이점

AlertDialog 해제 및 취소 메소드의 차이점

두 가지 방법은 동일한 효과를 가지며 둘 다 대화 상자를 닫습니다. 대화 상자를 생성할 때 setOnCancelListener 메소드를 호출하면 취소가 이 청취를 수행합니다.

취소의 소스 코드를 살펴보세요:

/**

?* 대화를 취소합니다. ?이는 본질적으로 {@link #dismiss()}를 호출하는 것과 같습니다. 하지만< /p>

?* {@link DialogInterface.OnCancelListener}(등록된 경우)도 호출합니다.

?*/

public void cancel() {

if (!mCanceled amp; mCancelMessage != null) {

mCanceled = true

// 이 대화 상자를 다시 사용할 수 있도록 새 메시지를 얻습니다. 사용됨< /p>

Message.obtain(mCancelMessage).sendToTarget()

}

해제();

그런 다음 해제 소스 코드를 살펴보겠습니다.

/**

* 이 대화 상자를 닫고 화면에서 제거하는 방법은 다음과 같습니다.

* 모든 스레드에서 안전하게 호출됩니다. ?대화상자가 닫힐 때 정리 작업을 수행하기 위해 이 메소드를 재정의하면 안 됩니다. 대신에

* {@link # onStop}.< /p>

*/

@Override

public void dismiss() {

if (Looper.myLooper() == mHandler.getLooper( )) {

hideDialog();

} else {

mHandler.post(mDismissAction)

}

}

마지막은 dismissDialog 메서드입니다:

void dismissDialog() {

if (mDecor == null || ! mShowing) {

return;

}

if (mWindow.isDestroyed()) {

Log.e(TAG, " Dialog()를 해제하려고 시도했지만 대화 상자의 창이 이미 파괴되었습니다!");

return

;

}

시도 {

mWindowManager.removeViewImmediate(mDecor)

} 마지막으로 {

if (mActionMode != null) {

mActionMode.finish()

}

mDecor = null

mWindow.closeAllPanels( );

onStop();

mShowing = false

sendDismissMessage(); }요약:

위 소스 코드에서 볼 수 있듯이 취소 메소드는 실제로 호출된 해제된 메소드입니다. DialogInterface.OnCancelListener가 수신하도록 설정된 경우 취소를 사용하여 닫기 이벤트를 수신할 수 있습니다.