java - 我的静态上下文在哪里?

标签 java android android-fragments fragment

我是android编程的新手,我正在尝试使用带有 fragment 的gridviewpager。我的代码是:

public class Main extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.grid);
    final Resources res = getResources();
    GridViewPager pager = (GridViewPager) findViewById(R.id.gridpager);
    pager.setOnApplyWindowInsetsListener(new OnApplyWindowInsetsListener() {
        @Override
        public WindowInsets onApplyWindowInsets(View v, WindowInsets insets) {
            // Adjust page margins:
            //   A little extra horizontal spacing between pages looks a bit
            //   less crowded on a round display.
            final boolean round = insets.isRound();
            int rowMargin = res.getDimensionPixelOffset(R.dimen.page_row_margin);
            int colMargin = res.getDimensionPixelOffset(round ?
                    R.dimen.page_column_margin_round : R.dimen.page_column_margin);
            pager.setPageMargins(rowMargin, colMargin);

            // GridViewPager relies on insets to properly handle
            // layout for round displays. They must be explicitly
            // applied since this listener has taken them over.
            pager.onApplyWindowInsets(insets);
            return insets;
        }
    });
//        MyPagerAdapter adapter=new MyPagerAdapter();
    pager.setAdapter(new MyPagerAdapter(Activity.getFragmentManager()));
}

public class MyPagerAdapter extends FragmentPagerAdapter {
    public MyPagerAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int pos) {
        switch(pos) {

            case 0: return FirstFragment.newInstance("FirstFragment, Instance 1");
            case 1: return SecondFragment.newInstance("SecondFragment, Instance 1");
            case 2: return SecondFragment.newInstance("SecondFragment, Instance 2");
            default: return SecondFragment.newInstance("SecondFragment, Default");
        }
    }

    @Override
    public int getCount() {
        return 3;
    }
  }
}

为了简洁起见,我折叠了一些内容。错误在这一行:

 pager.setAdapter(new MyPagerAdapter(Activity.getFragmentManager()));

这会返回错误:

Non-static method 'getFragmentManager()' cannot be referenced from a static context

但我不知道我的代码中什么是静态的。我已经尝试将我能想到的所有内容分配给变量,但仍然无法得到这个。感谢您的帮助。

最佳答案

Activity 是类的名称。通过声明 Activity.getFragmentManager(),您正在尝试调用类本身的方法,而不是类的特定实例。

就您而言,您根本不需要 Activity. 部分 - 只需调用 getFragmentManager() 本身即可:

pager.setAdapter(new MyPagerAdapter(getFragmentManager()));

关于java - 我的静态上下文在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27209452/

相关文章:

java - 自定义帐户存储库如何成为一个没有任何注释的 bean?

java - Spring @Qualifier 不起作用,但 @Resource 起作用?

java - 如果用户没有正确的角色,如何重定向? Spring 安全

android - 使用 JNI 访问我的共享库时出现 "Undefined reference"

android - Xamarin Android - 操作栏图标填充

android - html5 音频元素用 jquery 返回 src

android - 从 fragment 中处理相机应用程序而不会崩溃的正确方法

java - Spring Security 无法在 Windows 7 下运行

java - Viewpager 中的 fragment 仅在从旁边的 fragment 打开时刷新

android - 如何在 Android 上创建 Preference Activity 和 Preference Fragment?