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를 구현할 수도 있습니다 (코드 샘플에서 구현을 두 번 작성했습니다). 동일한 명령문을 사용하여 활동 컨텍스트를 가져올 수 있습니다.
다음은 경우에 대비하여 수행하는 방법입니다.
- 익명의 클래스 사용을 원하지 않습니다.
- 또는 활동 / 조각이 인터페이스를 직접 구현하도록합니다.
간단히 말해서
- 사용
dialogInterface목적과에 캐스팅Dialog객체 - 그런 다음 전화
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. 첫 번째 매개 변수 와 캐스트를 사용하면 됩니다.
- DialogInterface.OnCancelListener
- DialogInterface.OnDismissListener
- DialogInterface.OnKeyListener
- DialogInterface.OnMultiChoiceClickListener
- DialogInterface.OnShowListener
setOnClickListener 내부
이 클래스 아래로 감속
Context context = this;
이 컨텍스트를 사용하십시오.
AlertDialog.Builder alertDialog = new AlertDialog.Builder(context);
참고 URL : https://stackoverflow.com/questions/5447092/get-context-inside-onclickdialoginterface-v-int-buttonid
'IT Share you' 카테고리의 다른 글
| int를 String으로 변환하는 가장 효율적인 방법은 무엇입니까? (0) | 2020.12.03 |
|---|---|
| net.pipe 대 net.tcp 대 http 바인딩 (0) | 2020.12.03 |
| 메모리의 목록 크기 (0) | 2020.12.03 |
| 예상되는 예외없이 테스트 (0) | 2020.12.03 |
| mongoDB의 문자열 필드 값 길이 (0) | 2020.12.03 |