0

我正在尝试从我的静态类访问应用程序,但收到此错误

对于 PniemActivity.MyFragmentAdapter 类型,方法 getActivity() 未定义

但是当我离开 getActivity() 时,我收到了这条消息:

无法从 Activity 类型对非静态方法 getApplication() 进行静态引用

这是我的代码。

private static class MyFragmentAdapter extends FragmentPagerAdapter{
    private final int NUM_OF_PAGES = 10;

    public MyFragmentAdapter(FragmentManager fm) {
        super(fm);
        // TODO Auto-generated constructor stub
    }

    @Override
    public Fragment getItem(int index){
        return PageFragment.newInstance("Hoi "+ index );

    }

    @Override
    public int getCount(){
    appData = ((myApp) getActivity().getApplication()).slaughterData;

        return NUM_OF_PAGES;


    }


}

我想从我的数据库中获取所需的片段数量,这就是我想访问我的应用程序的原因。

有任何想法吗?

谢谢

4

2 回答 2

1

如果从数据库获取计数是这样做的唯一原因,只需从 getCount() 方法查询您的数据库。

如果您真的想通过静态字段获取活动(这通常是不好的):活动:

public static MyActivity instance;

onCreate(){
  instance = this;

}

在您的应用程序中的任何位置:

MyActivity instance = MyActivity.instance;

使用此解决方案您将遇到麻烦,因此请注意。我在 Java 中工作,但不能保证它如何与 Android 一起工作。

于 2012-12-12T20:59:46.167 回答
1

据我所知,getActivity() 是 Fragment 上的方法,而不是 FragmentPageAdapter 上的方法。您可以从 FragmentManager(您有参考)获得当前的 Fragment,但我可能会按照 Vladimir 在评论中建议的那样做:

  1. 将扩展 Application 的类添加到您的 AndroidManifest:
  2. 实现单例模式(使用 getInstance 方法)或简单地将公共静态引用添加到您的 Application 子类
于 2012-12-12T22:48:13.487 回答