我是一个Android初学者,正在努力学习。这是我的第一个问题,请原谅如果问题太简单,如果我在论坛上使用不当,请告诉我。
我有一个FragmentActivity使用了一个布局,其中包含一个ViewPager;activity创建了MyFragmentPagerAdapter的一个实例,它又创建了几个MyFragment的实例。所有都是support.v4版本。
我试图找到一种方法将一个整数值(代表用户先前选择的某个选项,实际上可以是可绘制id)传递给该片段。我使用意图将其传递给此活动,并且我知道我可以使用Bundle将值从FragmentPagerAdapter传递到片段,但我找不到一种方法将其从活动传递到FragmentPagerAdapter。我已经尝试过几种方法,包括更改构造函数,但无法使其起作用。
我有什么简单的遗漏吗?最好的方法是什么?
活动
public class SecondActivity extends FragmentActivity {
private MyIntegerAdapter1 mAdapter1;
private ViewPager mPager1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.second_layout);
mAdapter1 = new MyIntegerAdapter1(getSupportFragmentManager());
mPager1 = (ViewPager) findViewById(R.id.pager1);
mPager1.setAdapter(mAdapter1);
FragmentPagerAdapter
public class MyIntegerAdapter1 extends FragmentPagerAdapter {
public MyIntegerAdapter1(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
Fragment f1 = new IntegerFragment();
Bundle args1 = new Bundle();
args1.putInt("param", R.drawable.image1);
args1.putInt("number", 1);
f1.setArguments(args1);
return f1;
etc
片段
public class IntegerFragment extends Fragment {
private int imageResourceId;
private int numberSelected;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//change to avoid orientation crash
imageResourceId = getArguments().getInt("param");
numberSelected = getArguments().getInt("number");
newInstance
传递值是最好的方法。 - Varad Mondkar