【问题标题】:getActivity() with in FragmentActivity: androidgetActivity() with in FragmentActivity: android
【发布时间】:2012-10-02 15:19:40
【问题描述】:

我正在使用这个类 A,它扩展了另一个抽象类(并且这个抽象类扩展了 FragmentActivity),并且在我的一个函数中,我想为我当前的活动 A 获取 getActivity()。但是每当我使用 getActivity ,它给我的错误是 getActivity() 方法不是我的类定义的类型。请帮我 !!我怎样才能做到这一点??

我的 A 类代码

 public class A extends B
 {
  protected void onCreate(Bundle savedInstanceState) 
   {
    super.onCreate(savedInstanceState);


    setContentView(R.layout.voicing);

    //doing another initializations and stuff//

   }
  }

B 类代码

   public abstract class B extends FragmentActivity 
  {


   FragmentAdapter mAdapter;
   ViewPager mPager;
   PageIndicator mIndicator;


 }

【问题讨论】:

    标签: android android-activity android-fragmentactivity


    【解决方案1】:

    FragmentActivityActivity 的一个实例(Java 风格:FragmentActivity extends Activity)。

    所以调用getActivity 是没有意义的,因为FragmentActivity 已经是Acivity,所以只需调用/使用this 即可。在FragmentActivity 类中也没有称为getActivity 的方法。换句话说,您的 B 类正在扩展一个 Activity 实例。

    因此,在您的 A(或 B)类中,您可以使用此代码 sn-p 来获取活动实例:

    Activity test = (Activity) this;
    

    但是,如果您的 B 类扩展 Fragment,那么 getActivity 调用就会起作用。

    【讨论】:

    • 嘿,我在这里很困惑..我不知道我应该接受谁作为答案...因为我只能接受一个答案..:)
    • 优秀的帖子。出于某种原因,它是如此简单 getActivity() 在我认为它应该工作的时候却没有工作。
    【解决方案2】:

    FragmentActivity支持包Activity 的替代品。由于您的class B 扩展 FragmentActivity 和后来您的class A 扩展class B,因此您的class A 也指Activity(又名FragmentActivity)。

    简而言之,您不需要调用任何方法。只需使用 this 关键字来引用您的活动实例。

    【讨论】:

    • 非常感谢!!!!它起作用了!!!..有时事情看起来很复杂...再次非常感谢!!!
    猜你喜欢
    • 2017-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 2020-10-29
    • 2022-12-27
    • 2014-02-03
    相关资源
    最近更新 更多