2013-05-10 2 views
0

У меня было 3 действия в приложении для Android. Приложение выйдет, когда я нажимаю кнопку «Назад» в каждом действии. Используя следующий код.Перезагрузка активности Android при повторном запуске приложения

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

Я пробовал написать код на «onResume», но не работает.

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) 
{ 
    if (keyCode == KeyEvent.KEYCODE_BACK) 
    { 
     moveTaskToBack(true); 
     return true; 
    } 
     return super.onKeyDown(keyCode, event); 
} 

Пожалуйста, помогите мне. Заранее спасибо

+0

add this.finish() линия в обратном кнопочном методе. – Riser

+0

Значит, когда пользователь переходит к следующему экрану, предыдущий экран недоступен для него? – Anukool

+0

@SagarMaiyad Поведение кнопки BACK по умолчанию - это вызов 'finish()' для текущей активности. Вам не нужно переопределять метод и делать это самостоятельно. –

ответ

1
  1. Создать три вида деятельности - A, B и C
  2. В активность А - при вызове startActivity (B), вызовите отделку() также. Пример -

    public void onButtonClick() // Some method 
    { 
        startActivity(intentForB); 
        finish(); 
    } 
    
  3. Аналогично при переходе к C от B -.

    public void onButtonClick() 
    { 
        startActivity(intentForC); 
        finish(); 
    } 
    
  4. Когда пользователь находится на активность C и, когда он нажимает на кнопку назад, приложение будет свернута (нет необходимости прямое обращение к кнопке).

Надеюсь, это поможет.

+0

Wow !!! спасибо, что спасли мой день !!!!! – ramesh

0

moveTaskToBack() Переместить задачу, содержащую это действие, в конец стека действий.

Сделайте это в OnBackpressed() и используйте finish() во всех ваших мероприятиях. (Потому что вы сказали, что вы хотите, чтобы закончить все действия, когда вы нажали кнопку назад)

public void OnBackpressed() 
{ 
finish(); 
} 

и просто, в вашем коде сделать так:

В activity 1

Intent intent=new Intent(activity1.this,activity2.class); 
startActivity(intent); 
finish(); 

В activity 2

Intent intent=new Intent(activity2.this,activity3.class); 
startActivity(intent); 
finish(); 

Если вы использовали это в своем первом два действия. Затем в третьем действии нет необходимости обрабатывать OnBackpressed(). Потому что OnBackpressed() вызывается, когда действие обнаружило нажатие на кнопку пользователя задней клавиши. Реализация по умолчанию просто завершает текущую активность, но вы можете переопределить ее, чтобы делать все, что хотите.

+0

спасибо за ваш комментарий ... теперь, когда я нажал клавишу «Назад», он перейдет ко второму виду, кроме выхода – ramesh

+0

, вы можете использовать OnBackpressed() в каждом действии, чтобы справиться с этим. потому что реализация по умолчанию просто завершает текущую деятельность –

+0

use finish() в ваших действиях при переходе на другую деятельность –

0

Используйте этот код в AndroidManifest.xml и android: clearTaskOnLaunch = "true" в первом запуске.

<activity 
     android:name="com.example.package.SplashActivity" 
     android:label="@string/app_name" 
     android:clearTaskOnLaunch="true"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 

Если вы хотите использовать Key Event затем использовать этот код в вашей деятельности:

@Override 
    public boolean dispatchKeyEvent(KeyEvent event) 
    { 
     boolean result = false; 
     switch(event.getKeyCode()) 
     { 
      case KeyEvent.KEYCODE_BACK: 
       finish(); // or moveTaskToBack(true); 
       result = true; 
       break; 
      default: 
       result= super.dispatchKeyEvent(event); 
       break; 
     } 
     return result; 
    } 
0

Если вы хотите, чтобы выйти во всех 3 Activities, то вы должны закрыть текущую активность, используя finish() при запуске новый вид деятельности.

0

Используйте этот код в AndroidManifest.xml и android: launchMode = "singleTop" в первом запуске.

2

Вы можете решить эту проблему с помощью следующего образом В вашем третьем положить класс активности следующему код,

@Override 
public void onBackPressed() { 
    // TODO Auto-generated method stub 
    super.onBackPressed(); 
    startActivity(new Intent(getBaseContext(), YourSecondActivity.class)); 
    finish(); 
} 

Таким же образом Вы можете поместить во втором классе активности

@Override 
public void onBackPressed() { 
    // TODO Auto-generated method stub 
    super.onBackPressed(); 
    startActivity(new Intent(getBaseContext(), YourFirstActivity.class)); 
    finish(); 
} 

Окончательно Вы можете поместить это в ваш основной класс

@Override 
public void onBackPressed() { 
    // TODO Auto-generated method stub 
    super.onBackPressed(); 
    finish(); 
} 
Смежные вопросы