フラグメントを次々とレンダリングしているビューページャを使用しています。私が直面している問題は、現在表示されているフラグメントをタッチすると、まだロードされていない次のフラグメントのタッチイベントが発生することです。どのようにして現在の/目に見える部分がタッチされたかを確認するには、&タッチイベントがそれに応じて処理されます。Androidでポケットベルの問題を表示する
これは、フラグメントをレンダリングする私のアダプタです。
private class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter {
public ScreenSlidePagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
Log.d("zambob",position+":"+slideShowItems.get(position).name);
Fragment fragment = new ScreenSlidePageFragment();
Bundle bundle = new Bundle();
bundle.putString("IMAGE_URL",slideShowItems.get(position).image);
bundle.putString("CAPTION", slideShowItems.get(position).name);
fragment.setArguments(bundle);
return fragment;
}
@Override
public int getCount() {
return slideShowItems.size();
}
}
これは、タッチイベントも処理するフラグメントクラスです。
public class ScreenSlidePageFragment extends Fragment {
String imageUrl,text;
UWSharedPreference preference;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
ViewGroup rootView = (ViewGroup) inflater.inflate(
R.layout.fragment_slide_show, container, false);
rootView.getBackground().setAlpha(200);
preference = new UWSharedPreference(getActivity());
imageUrl = getArguments().getString("IMAGE_URL");
text = getArguments().getString("CAPTION");
TouchImageView iv_image = (TouchImageView) rootView.findViewById(R.id.jj_image);
TextView tv_caption = (TextView) rootView.findViewById(R.id.caption_text);
iv_image.setImageUrl(imageUrl, AppController.getInstance().getImageLoader());
if (text != null && text.equals("custom")){
tv_caption.setText("");
}
else {
tv_caption.setText(text);
}
iv_image.setOnTouchListener(new OnTouchListener());
return rootView;
}
class OnTouchListener implements View.OnTouchListener {
public boolean onTouch(View v, MotionEvent event) {
Log.d("zambob","On Touch Called for text" + text +" diner txn id" + preference.getDinerTxnID());
if (text.equals("custom") && preference.getDinerTxnID()!=0){
startActivity(new Intent(getActivity(), FBCheckInActivity.class));
getActivity().finish();
}
else {
getActivity().onBackPressed();
}
return true;
}
}
}
今の問題は、ビューのページャでは、3つの断片が最初にロードされているということです。目に見えるもの、背後にあるもの&次に来るもの。インテントプロセスを開始するために必要なフラグメントに触れると機能しません。しかし、上記の前にフラグメントをタッチすると、必要なプロセスが進行中です。
私は目に見える断片に触れたら、必要なプロセスが始まることを確認する必要がありますか?
あなたの質問は分かりません。おそらくもう少し説明やコードが役に立つでしょう。 – happydude