IT Share you

onClick (DialogInterface v, int buttonId) 내에서 컨텍스트를 얻습니까?

shareyou 2020. 12. 3. 20:53
반응형

onClick (DialogInterface v, int buttonId) 내에서 컨텍스트를 얻습니까?


onClick(View view)버튼의 콜백 인 내부 컨텍스트 를 가져 오는 onClickListener()것은 쉽습니다.

view.getContext()

하지만 상황에 맞는 내부 얻을 방법을 알아낼 수 없습니다 onClick(DialogInterface v, int buttonId), A에 대한 콜백 대화 의를onClickListener

public class MainActivity extends Activity implements android.content.DialogInterface.OnClickListener

이것이 가능한가?


DialogInterface.OnClickListener익명 클래스로 정의 할 때 외부 컨텍스트를 참조 할 수 있습니다 . 활동중인 경우 MyActivity.this컨텍스트로 사용할 수 있습니다 .

편집 -활동이 구현 중이므로 컨텍스트로 DialogInterface.OnClickListener사용할 수 있어야합니다 this.


DialogInterface가 MainActivity 내에 있으면 다음을 사용하여 컨텍스트를 가져올 수 있습니다.

MainActivity.this.getActivityContext();

Btw DialogInterface를 구현할 수도 있습니다 (코드 샘플에서 구현을 두 번 작성했습니다). 동일한 명령문을 사용하여 활동 컨텍스트를 가져올 수 있습니다.


다음은 경우에 대비하여 수행하는 방법입니다.

  1. 익명의 클래스 사용을 원하지 않습니다.
  2. 또는 활동 / 조각이 인터페이스를 직접 구현하도록합니다.

간단히 말해서

  1. 사용 dialogInterface목적과에 캐스팅 Dialog객체
  2. 그런 다음 전화 getContext()

DialogInterface.OnClickListener의:

DialogInterface.OnClickListener foo = new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialogInterface, int which) {
        Dialog dialog  = (Dialog) dialogInterface;
        Context context = dialog.getContext();
        // do some work with context
    }
};

이것은 다음 인터페이스에서도 작동합니다 DialogInterface dialogInterface. 첫 번째 매개 변수 와 캐스트를 사용하면 됩니다.


setOnClickListener 내부

이 클래스 아래로 감속

Context context = this;

이 컨텍스트를 사용하십시오.

AlertDialog.Builder alertDialog = new AlertDialog.Builder(context);

참고 URL : https://stackoverflow.com/questions/5447092/get-context-inside-onclickdialoginterface-v-int-buttonid

반응형