片段中的Toast,应该使用getActivity()或getAcitivity().getApplicationContext()?

Nai*_*eBz 8 android

对不起我的新手问题,我只是找不到谷歌和stackoverflow的答案..我刚开始学习android,希望可以为Android知识建立一个良好的基础.如果我在片段中创建toast.maketext,我想知道我应该在下面使用哪个.getActivity()或getAcitivity().getApplicationContext()?

我确实尝试了两者,效果很好..

btn1.setOnClickListener(new View.OnClickListener() {            
@Override
public void onClick(View v) {
 Toast.makeText(getActivity(), "hello",Toast.LENGTH_LONG).show();
 Toast.makeText(getActivity().getApplicationContext(),"Hello",Toast.LENGTH_LONG).show();
}
});
Run Code Online (Sandbox Code Playgroud)

Ema*_*lin 12

对于用户界面相关的调用,请使用Activity上下文.

请参阅Reto Meier的解释:https: //stackoverflow.com/a/987503/534471

  • 不可以.根据经验,只要您处于活动范围内,就可以使用活动上下文.离开活动范围时,请使用"应用程序"上下文.我知道这个答案可能会令人困惑,但问题没有明确的答案,而且很大程度上取决于具体情况.在某些情况下,您必须使用Activity上下文,否则您将获得异常,在其他情况下,您应该使用Application上下文来避免泄漏Activity上下文.我假设你的代码在一个Activity中?如果是,则使用活动上下文.如果没有,请发布更多代码. (3认同)
  • 如果它是片段,则使用getActivity()作为Context.只需确保在onAttach(活动活动)和onDetach()之间进行调用,否则没有附加活动,您将获得异常. (2认同)