Как я могу поделиться onTouch MotionEvent между двумя фрагментами? - PullRequest
0 голосов
/ 03 мая 2018

steps in application

У меня есть 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". Как начать прослушивание событий во втором фрагменте, когда все еще удерживает палец на экране перед началом этого второго события?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...