Установите Intent на клавишу «Назад» в TabActivity

У меня есть три действия - A B и C, из которых B является активностью вкладок. Активность A запускается первой, а B запускается из A. Я заканчиваю Activity A, когда B запускается с использованием этого кода

public void onStop() {
   super.onStop();
   this.finish();
}

Теперь я хочу запустить Activity C при нажатии клавиши «Назад» в B.

Я попытался переопределить клавишу возврата, используя этот код

@Override 
public void onBackPressed() { this.getParent().onBackPressed();
}

Это не помогает, так как родительская активность завершается при запуске дочерней активности. Что на самом деле происходит, когда я нажимаю клавишу «Назад», так это то, что действие выходит на главный экран.

Я попытался переопределить клавишу «Назад» и установить для нее намерение.

@Override
public void onBackPressed() {
    Intent backIntent = new Intent();
    backIntent.setClass(this, main.class);
    startActivity(backIntent);
}

Мне это тоже не помогает. Что может быть возможным решением этой проблемы. Как я могу запустить Activity C при нажатии клавиши «Назад»?


person darsh    schedule 04.05.2012    source источник
comment
попробуйте.... backIntent.setClass(это, C.class);   -  person dira    schedule 04.05.2012


Ответы (3)


Во-первых, вы не должны заканчивать действие A, когда действие A останавливается, это совершенно неправильный подход, вместо этого вы должны закончить действие, когда начинаете действие B.

Например

Intent i = new Intent(this, B.class);
startActivity(i);
finish();

Теперь вы хотите запустить действие C, когда пользователь нажимает кнопку «Назад», поэтому используйте приведенный ниже код.

@Override
public void onBackPressed() {
    Intent backIntent = new Intent(this, C.class);
    startActivity(backIntent);
    super.onBackPressed();
}
person Dharmendra    schedule 04.05.2012
comment
Спасибо за ваши усилия. Я попробовал это. Проблема все еще сохраняется. Активность C не запущена - person darsh; 04.05.2012

Вы должны переопределить onKeyDown

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    // TODO Auto-generated method stub

    if (keyCode == event.KEYCODE_BACK)
    {
        //Do your code here
    }
    return super.onKeyDown(keyCode, event);
}
}

Это будет вызвано, когда пользователь нажмет кнопку жесткого возврата устройства.

Чтобы перейти к следующему действию: StartActivity(new Intent(getApplicationContext(),main.class));

person Krishnakant Dalal    schedule 04.05.2012
comment
Пробовал это. К сожалению, проблема сохраняется. - person darsh; 04.05.2012

Переопределите приведенный ниже метод и импортируйте событие.....

public boolean onKeyDown(int keyCode, KeyEvent event) 
{
// TODO Auto-generated method stub

   if (keyCode == event.KEYCODE_BACK)
   {
      //Write your intent or other code here
   }
   return super.onKeyDown(keyCode, event);
}
person Raghul Sugathan    schedule 23.12.2013