2011-09-26 8 views
0

현재 작업에 대한 this 참조를 사용하는 대신 getBaseContext()에서 반환 된 컨텍스트로 TimePickerDialog을 초기화하면 예외가 throw되는 시간 선택기가있는 대화 상자를 표시 할 때이 문제가 발생했습니다. . 그래서이 코드는 괜찮 :대화 상자를 표시 할 때 오류가 발생했습니다

@Override 
protected Dialog onCreateDialog(int id) 
{ 
    return new TimePickerDialog(this , mTimeSetListener, hr, min, false); 
} 

하지만 그때

Toast.makeText(getBaseContext() , ... 

을 사용 축배를 표시하려면이 또한 작동하면이 코드는 예외를

protected Dialog onCreateDialog(int id) 
{ 
    return new TimePickerDialog(getBaseContext(), mTimeSetListener, hr, min, false); 
} 

가 발생합니다.

내 질문은 대화 상자에서 표시 할 대화 상자가 baseContext이 될 것이라고 생각했을 것입니다. 왜이 토스트 작업을 사용하지만 대화 상자에 "this", 즉 현재 활동에 대한 참조가 필요합니다. 그들은 그들이 일하는 방식이 매우 유사하다고 생각했을 것입니다.

답변

1

당신이하고있는 일을 알고 있고 그것을 사용하기위한 매우 구체적이고 구체적인 이유가없는 한 getBaseContext()을 사용하지 마십시오.

Toast에는 필요하지 않으므로 Dialog에는 필요하지 않습니다. 및 Dialogs을 생성하기 위해 Context을 사용하는 것이 무엇이든간에 Activity을 사용하고 있으므로 this을 사용하면됩니다.

관련 문제