2014-05-17 4 views
1

Привет в моем приложении для Android. Я включил заставку после этой операции всякий раз, когда я нажимал кнопку «Назад», она переходит на предыдущие страницы MainActivity. Но мне нужно было выйти из приложения, если пользователь нажмет кнопку «Назад» от MainActivity. Но теперь в настоящее время mainactivity не является началом деятельности, а заставка - это активность. Таким образом, я проверил некоторые методы, и я увиделAndroid exit app on close

intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 

это очистит предыдущую деятельность .. Но в MainActivty почему мне нужно намерение .. Я дал

finish(); 

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

это мой backpress код mainActivity

@Override 
public void onBackPressed() { 
    // TODO Auto-generated method stub 
    super.onBackPressed();  


    finish(); 

} 

и мой SplashScreen

WebView wv; 
    // Splash screen timer 
    private static int SPLASH_TIME_OUT = 4000; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 
     requestWindowFeature(Window.FEATURE_NO_TITLE); 
     setContentView(R.layout.activity_flash); 

     wv = (WebView) findViewById (R.id.webView1); 
     wv.setHorizontalScrollBarEnabled(false); 



     wv.loadUrl("file:///android_asset/Finally-320.gif"); 


     new Handler().postDelayed(new Runnable() { 

      /* 
      * Showing splash screen with a timer. This will be useful when you 
      * want to show case your app logo/company 
      */ 


      @Override 
      public void run() { 
       // This method will be executed once the timer is over 
       // Start app main activity 
       Intent i = new Intent(SplashScreen.this, MainActivity.class); 
       i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
       startActivity(i); 

       // close this activity 
       finish(); 
      } 


     }, SPLASH_TIME_OUT); 

} 
    @Override 
    public void onBackPressed() { 
     // TODO Auto-generated method stub 

     super.onBackPressed(); 
      finish(); 

} 

} 
+0

использование 'intent.setFlags (Intent.FLAG_ACTIVITY_CLEAR_TOP)' для вызова '' MainActivity' из SplashScreen', и не называют 'finish' метод на другой операции, если вы хотите называть 'finish', вам нужно обработать все' onBackPress' –

+0

, но что использовать добавление в заставку. – Jocheved

+1

, когда вы используете это в заставке экрана, когда основной стек активности активности является Clear , поэтому, если вы нажмете назад, приложение для клавиатуры, которое выйдет, и SplashActivity не будет снова запущено в вашем приложении. –

ответ

2

Вашему запросу:

Но мне нужно, чтобы выйти из приложения, если пользователь нажмет кнопку назад от MainActivity.

Для этого вам нужно написать в MainActivity

@Override 
    public void onBackPressed() { 
     finish(); 
    } 

Update:

положить эту линию, чтобы выйти из приложения:

moveTaskBack (истинное);

+0

Но моя первая активность не является основной операцией, которая представляет собой заставку – Jocheved

+0

, попробуйте с этим: 'moveTaskBack (true);' –

0

использование System.exit(0) в onBackPressed() так:

@Override 
public void onBackPressed() { 
    // TODO Auto-generated method stub 
    super.onBackPressed();  

    System.exit(0); 
}