尝试显示对话框时出错

时间:2011-09-26 22:00:58

标签: android dialog this android-context

如果我使用从TimePickerDialog返回的上下文初始化getBaseContext()而不是使用this,则在尝试显示带有时间选择器的Dialog时会出现此问题参考当前的活动。 所以这段代码很好:

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

但此代码抛出异常

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

如果我想要显示Toast,那么我会使用

    Toast.makeText( getBaseContext() , ... 

这也有效。

我的问题是我会认为我希望Dialog显示的上下文是baseContext所以为什么Toast使用这个但是Dialog需要引用“this”,即当前活动,因为我认为他们的工作方式非常相似?

1 个答案:

答案 0 :(得分:1)

除非您知道自己在做什么,并且有一个非常具体和具体的理由来使用它,否则不要使用getBaseContext()

Toast您不需要它,而Dialog则不需要它。无论您使用ActivityContext创建ToastsDialogs都是非常好this,所以只需使用{{1}}。