Как начать новое задание (с намерением), если я удерживаю кнопку и возвращаюсь к основному занятию, если отпущу палец?
Я получил изображение, которое начинает новую деятельность.
//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