当使用getApplicationContext()作为上下文时,Toast没有在android 6中的progressUpdate上显示

时间:2016-07-14 18:02:59

标签: android toast

我正在尝试在ProgressUpdate()方法上显示Toast。在Android 4,5上运行良好,但是在Android 6上没有显示toast,也没有抛出异常。

这是我的方法:

@Override
    protected void onProgressUpdate(String... values) { 
    super.onProgressUpdate(values);
    Toast.makeText(getApplicationContext(), values[0],     Toast.LENGTH_SHORT).show();
    }

如果我用getBaseContext()替换getApplicationContext(),Toast将按预期工作。

如果我使用MainActivity.this作为上下文

,它不起作用

使用getBaseContext()是否正确? 为什么在android 4,5上使用getApplicationContext()而不是6?

1 个答案:

答案 0 :(得分:0)

我不确定他们制作Android 6.0更新时发生了什么,但是他们必须包含一些上下文,或类似的东西。以下是这两种方法的区别: Difference between getContext() , getApplicationContext() , getBaseContext() and "this"

  

Activity.getApplicationContext():返回整个上下文   应用程序(所有活动都在其中运行的过程)。   如果需要上下文,请使用此代替当前的Activity上下文   与整个应用程序的生命周期相关联,而不仅仅是当前的应用程序   活性。

     

ContextWrapper.getBaseContext():如果需要访问Context   在另一个上下文中,您使用ContextWrapper。上下文提到   从内部通过getBaseContext()访问ContextWrapper。