我是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/