0

位置に応じて各フラグメントで特定のサウンドを再生したい 私の実装は次のとおりです。

主な活動:

 public class MainActivity extends FragmentActivity{
    private DescAdapter adapter;
    private ViewPager pager;

static int QUESTIONS_COUNT=4;



@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.main);



    adapter = new DescAdapter(getSupportFragmentManager());
    pager = (ViewPager) findViewById(R.id.pager);


    // Set Adapter to pager:
    pager.setAdapter(this.adapter);
    pager.setCurrentItem(0);


    pager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {

        @Override
        public void onPageSelected(final int pos) {
            // TODO Auto-generated method stub
            pager.setCurrentItem(pos,true);
                            adapter.notifyDataSetChanged();
                }

        @Override
        public void onPageScrollStateChanged(int arg0) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onPageScrolled(int arg0, float arg1, int arg2) {
            // TODO Auto-generated method stub

        }

    });
}

public class DescAdapter extends FragmentStatePagerAdapter {
    public DescAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public int getCount() throws NullPointerException{

        return QUESTIONS_COUNT;
    }

    @Override
    public Fragment getItem(int position) throws NullPointerException{

        QuizFragment frag = new QuizFragment();
         Bundle bundle = new Bundle();
        bundle.putInt("quizPosition", position);
        frag.setArguments(bundle);
        return frag;

    }

}


}

フラグメント アクティビティ:

public class QuizFragment extends Fragment {

    private int mPos=1;

    static int QUIZ_SOUNDS[]={R.raw.sound_1,R.raw.sound_2,R.raw.sound_3,R.raw.sound_4};
    SoundPlayer sp=null;



    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        mPos=getArguments().getInt("quizPosition");



    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        final View view = inflater.inflate(R.layout.fragment, container, false);



        sp = new SoundPlayer();
        sp.initSoundPlayer(QUIZ_SOUNDS[mPos]);
        sp.playSound(getActivity());


        return view;
    }

}

アプリケーションを起動すると、最初のフラグメントで 2 つのサウンドが同時に再生されますが、他のフラグメントではサウンドが正常に再生されます。各フラグメントで 1 つのサウンドを再生するにはどうすればよいですか?

4

1 に答える 1