Как начать новое задание (с намерением), если я удерживаю кнопку и возвращаюсь к основному занятию, если отпущу палец?

Я получил изображение, которое начинает новую деятельность.

//Mainactivity
imageView.setOnLongClickListener(new View.OnLongClickListener() {
        @Override
        public boolean onLongClick(View v) {
            // start your activity...
            Intent i = new Intent( MainActivity.this, FullActivity.class);
            startActivity(i);
            return false;
        }
    });

Я предпочитаю все еще держать палец на экране, и если я отпускаю палец, я возвращаюсь к своей основной деятельности. Я попробовал это с помощью ontouchlistener, но он не распознал, что я все еще держу экран после начала новой активности.

//Fullactivity
imageViewFull.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            if(event.getAction()== MotionEvent.ACTION_UP){

                finish();
            }
            return true;
        }
    });

Как интегрировать эту функцию?

1 ответ

Я столкнулся с той же проблемой, и единственным решением, которое я нашел, было удерживать кнопку и смотреть на предыдущее действие в течение 3 секунд. Вот как я это сделал: предположим, что button1 из MainActivity отправляет вас в SecondActivity, и, удерживая button2 в SecondActivity, вы можете несколько секунд заглянуть в MainActivity. Итак, в MainActivity мы назначаем button1 setOnClickListener:

      button1 .setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // start SecondActivity for result
                Intent intent = new Intent(MainActivity.this, SecondActivity.class);
                intent.putExtra("string", string); // variables you want to pass
                startActivityForResult(intent, REQUEST_CODE); // REQUEST_CODE = 1 (declared above onCreate)
            }
        });

В SecondActivity мы назначаем setOnClickListener и setOnLongClickListener button2:

      button2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent resultIntent = getIntent();
                resultIntent.putExtra("peek", "false");
                setResult(Activity.RESULT_OK, resultIntent);
                finish();
            }
        });

button2.setOnLongClickListener(new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(View v) {
                Intent resultIntent = getIntent();
                resultIntent.putExtra("peek", "true");
                setResult(Activity.RESULT_OK, resultIntent);
                finish();
                return true;
            }
        });

Мы передаем строку «peek», чтобы узнать в MainActivity, хотим ли мы посмотреть или полностью вернуть. Наконец, мы должны реализовать onActivityResult в MainActivity:

      @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        try {
            super.onActivityResult(requestCode, resultCode, data);

            if (requestCode == REQUEST_CODE  && resultCode  == RESULT_OK)
            {
                String peek = data.getStringExtra("peek");
                if(peek.equals("false")) //we dont return to SecondActivity
                {
                    //your code
                }
                else{ 
            //we stay on MainActivity for 3 seconds and return to SecondActivity
                    //your code

                    Handler handler = new Handler();
                    handler.postDelayed(new Runnable() {
                        public void run() {
                            Intent intent = new Intent(MainActivity.this, SecondActivity.class);
                            intent.putExtra("string", string); // variables you want to pass
                            startActivityForResult(intent, REQUEST_CODE);
                        }
                    }, 3000); //time in milliseconds 
                }
            }
        } catch (Exception ex) {
            //nothing
        }

    }

Ну вот и все! Надеюсь, это будет полезно: D

Другие вопросы по тегам