0

私は6つのフラグメントを持っていますが、すべて同じレイアウトと機能性を持ち、各フラグメントのデータ[A、B、C、D、...]は異なります。最初の2つのフラグメントが作成されると、私はB、B、C、D ...などを表示します。 Cからスワイプすると、正しいデータがC、B、Aで表示されます。 私は何が間違っているのか分かりません。ここでは、コードのビットは次のとおりです。同じデータを示す第1および第2のフラグメント

private class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter { 

    private final Bundle fragmentBundle; 

    public ScreenSlidePagerAdapter(FragmentManager fm, Bundle data) { 
     super(fm); 
     fragmentBundle = data; 
    } 

    @Override 
    public Fragment getItem(int position) { 
     // creating fragment and passing int position for array and array 
     return SoundFrag.newInstance(position, fragmentBundle); 
    } 

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

およびフラグメントのクラス:

public class SoundFrag extends Fragment{ 
    // fragment Id Postion 
    private int fragPosition; 
    private static final String KEY_POSITION="fragIntIdP"; 

    static SoundFrag newInstance(int position, Bundle arrayIntS) { 
     SoundFrag frag=new SoundFrag(); 
     arrayIntS.putInt(KEY_POSITION, position); 
     frag.setArguments(arrayIntS); 

     return(frag); 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 

     // retrive data from bundle passed by activity 
     Bundle argsIn = getArguments(); 
     SoundArrayParcel arrayToReceive = argsIn.getParcelable("dataResId"); 
     final int[][] arrayResId = arrayToReceive.getInt(); 
     fragPosition = argsIn.getInt("fragIntIdP"); 

     // inflate the fragment 
     final ViewGroup rootView = (ViewGroup) inflater.inflate(R.layout.sounds_frag, container, false); 

..... 私は問題がここにあると信じます。最初の2つのフラグメントでは、fragPositionの値は0でなく1で、常に1になります。なぜですか?

ありがとうございました!何が価値がある...

については

答えて

0

配列がもはやバンドルを経由してフラグメントに渡されたように、私は、コードを変更しません。私は今、フラグメント(getItem(int position)メソッドから)の位置値を渡すだけで、配列は膨張した後にフラグメント内で '構築'されます。 私が前に気づいていた状態(fragpositionが1番目と2番目の断片の両方に1)はもはや発生せず、アプリケーションは情報を正しく表示します。 なぜですか?わかりませんが、うまくいきます。しかし、私が見つけた解決策が気に入らないので、私は調査を続けます。

関連する問題