У меня есть 2 фрагмента. Первый работает все время (первый экран). Когда я нажимаю и удерживаю TextView
, я добавляю второй фрагмент (второй экран). Затем, продолжая удерживать, я перетаскиваю указатель на красный TextView, принадлежащий второму фрагменту (третий экран). Когда я ввожу этот красный TextView
, я хочу увеличить его альфа-значение. Затем, когда я делаю ACTION_UP
, второй фрагмент разрушается и нажимается TextView
, в первом фрагмент исчезает (четвертый экран).
Моя проблема в том, как управлять onTouchListener во втором фрагменте красного TextView?
Я пытался слушать, если onTouchListener
во втором фрагменте даже отвечает, но это не так.
//second fragment
...
deleteTextView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent event) {
event = MotionEvent.obtainNoHistory(event);
//here testing if onTouch works
if(event.getAction()>=0) {
Log.v("UWAGA ZOOM", Integer.toString(event.getAction()));
return true;
}
if(event.getAction() == MotionEvent.ACTION_HOVER_ENTER){
deleteArea.setAlpha(1.0f);
return true;
}
if(event.getAction() == MotionEvent.ACTION_HOVER_EXIT){
deleteArea.setAlpha(0.5f);
return true;
}
return false;
}
});
Но ответы onTouchListener от первого фрагмента!
//first fragment
...
linearLayout2.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
//here testing if onTouch works
if(event.getAction()>=0) {
Log.v("UWAGA", Integer.toString(event.getAction()));
return true;
}
if(event.getAction() == MotionEvent.ACTION_DOWN){
Fragment dayEventZoomFragment = new DayEventZoomFragment();
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.setCustomAnimations(android.R.animator.fade_in,
android.R.animator.fade_out);
Bundle bundle = new Bundle();
bundle.putString("event_title", dayEvent.getTitle());
bundle.putInt("event_hour", dayEvent.getHour());
dayEventZoomFragment.setArguments(bundle);
fragmentTransaction.add(R.id.fragment_layout, dayEventZoomFragment, "dayEventZoomFragment").addToBackStack("fragmentDay")
.commit();
return true;
}
if(event.getAction() == MotionEvent.ACTION_UP){
getActivity().dispatchKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_BACK));
getActivity().dispatchKeyEvent(new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_BACK));
return true;
}
return false;
}
});
Поэтому, когда я перетаскиваю указатель, как в третьей сс, я получаю только LOG "UWAGA" и не получаю LOG "UWAGA ZOOM".
Как начать прослушивание событий во втором фрагменте, когда все еще удерживает палец на экране перед началом этого второго события?