あなたはあなたのフラグメントのonCreateViewメソッドが実行されたことを確認する必要がありgetViewメソッドを呼び出す前にgetViewメソッド()
アプローチ1
を使用することができ
(たとえば、あなたがviewpagerにOnPageChangeListenerを添付し、そして可能性がありonPageSelectedの内側に、あなたが添付OnTouchListener)
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
fragments.get(position).getView().setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
return false;
}
});
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
アプローチ2
setOnTouchListener方法でベースの断片を作成します。
public class TouchableFragment extends Fragment {
protected View.OnTouchListener mOnTouchListener;
public void setOnTouchListener(View.OnTouchListener mOnTouchListener) {
this.mOnTouchListener = mOnTouchListener;
}
}
をごフラグメントのonCreateViewメソッド内:
public class MyFragment extends TouchableFragment {
public View onCreateView(LayoutInflater inflater,
ViewGroup container, Bundle s) {
mView = inflater.inflate(
R.layout.a_layout
container,
false
);
if(this.mOnTouchListener != null){
mView.setOnTouchListener(this.mOnTouchListener);
}
return mView;
}
}
そして、あなたの活動の内部:
MyFragment myFragment = new MyFragment();
myFragment.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
return false;
}
});
返信用thnx ...それは私のためには機能しませんでした。 –
ねえ、もう一度私の答えを確認できますか? getView()が呼び出されたことを確認した後でgetView()を呼び出す必要があることを忘れてしまいました。この問題を解決する新しいアプローチを追加しました。ありがとうございました –
Cardosoにもう一度感謝します。このコードをチェックします –