【问题标题】:Toast in Fragment, should use getActivity() or getAcitivity().getApplicationContext()?在 Fragment 中吐司,应该使用 getActivity() 还是 getAcitivity().getApplicationContext()?
【发布时间】:2013-02-22 02:24:01
【问题描述】:

对不起我的新手问题,我只是无法从 google 和 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();
}
});

【问题讨论】:

  • 我相信你通常会使用 Activity Context 来处理 UI。

标签: android


【解决方案1】:

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

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

【讨论】:

  • 所以使用 getActivity() 而不是 getAcitivity().getApplicationContext() 来避免内存泄漏?我对吗?请指正~
  • 没有。作为一个经验法则,只要你在一个活动的范围内,就使用活动上下文。离开活动范围时使用应用程序上下文。我知道这个答案可能令人困惑,但这个问题没有明确的答案,并且很大程度上取决于具体情况。在某些情况下,您必须使用 Activity 上下文,否则会出现异常,在其他情况下,您应该使用 Application 上下文以避免泄漏 Activity 上下文。我假设您的代码在活动中?如果是,则使用活动上下文。如果没有,请发布更多代码。
  • 感谢您的快速回复。 erm,如何只考虑是在一个Activity的范围内还是离开Activity的范围?吐司是在片段类 onCreateView 函数中创建的。是否考虑超出活动范围?
  • 如果它是一个片段,使用 getActivity() 作为上下文。只要确保调用发生在 onAttach(Activity activity) 和 onDetach() 之间,否则没有附加 Activity,你会得到一个异常。
  • 感谢您的回复。谢谢~你能给我一些有用的例子和链接,哪个案例超出了活动范围?
猜你喜欢
  • 2020-10-14
  • 2012-03-07
  • 2012-02-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多