位置に応じて各フラグメントで特定のサウンドを再生したい 私の実装は次のとおりです。
主な活動:
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 つのサウンドを再生するにはどうすればよいですか?