2013-05-03 3 views
1

Я довольно новичок в разработке Android и только что закончил свое первое приложение для университетского проекта. Я добавил в экран заставки, который отлично работает, он загружается до главного меню, а затем переключается через 3 секунды, однако, если кнопка обратной кнопки нажата на телефон во время экрана всплеска, вы вынимаетесь из приложения, а затем через 3 секунды пройдет главное меню. Есть ли способ заставить приложение быть уничтоженным, если кнопка возврата нажата во время заставки?заставка не будет уничтожать при нажатии кнопки назад

Это мой splash.java файл

общественный класс Всплеск расширяет активность {

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     requestWindowFeature(Window.FEATURE_NO_TITLE); 
     setContentView(R.layout.splash); 

     Thread SplashTimer = new Thread(){ 
      public void run(){ 
      try { 
       sleep(3000);//3 seconds 
       Intent menuIntent = new Intent("com.example.Main"); 
        startActivity(menuIntent); 
       } 
       catch (InterruptedException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 

       finally { 
         finish();     
       } 
      } 
     }; 
     SplashTimer.start(); 
    } 

}

+0

Вы можете дать некоторый код, если вы хотите получить помощь ... – filmor

+0

Просто FYI, заставок сильно обескуражен в Android Программы. 99% времени, нет причин использовать его. – Teovald

+0

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

ответ

0

Try:

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

Я добавил этот код в конец своего кода. это верно? сразу после второй фигурной фигурной скобки. если это подходящее место, тогда нах это не исправить мою проблему, спасибо за вашу помощь, хотя –

+0

Он стоит перед последней скобкой. public class YourClass extends Activity {// ваш код ... // code keydown} – andrehsouza

+0

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

0

Вы можете заблокировать или изменить поведение (например, API 5, я думаю), используя это в вашем коде активности брызг :

@Override 
    public void onBackPressed() 
    {  
     super.onBackPressed(); 
    } 

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

+0

это очень помогло мне, спасибо –

2

Этот код должен сделать это в памяти утечки свободной манере:

public class Splash extends Activity { 

    private static final int SPLAH = 1; 
    private final MyHandler mHandler = new MyHandler(this); 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     requestWindowFeature(Window.FEATURE_NO_TITLE); 
     setContentView(R.layout.splash); 
     Message m = Message.obtain(); 
     m.what = SPLAH; 
     mHandler.sendMessageDelayed(m, 3000); 
    } 

    @Override 
    public void onBackPressed() { 
     super.onBackPressed(); 
     mHandler.removeMessages(SPLAH); 
    } 

    private static class MyHandler extends Handler { 
     private final WeakReference<Splash> mActivity; 

     public MyHandler(Splash activity) { 
      mActivity = new WeakReference<Splash>(activity); 
     } 

     @Override 
     public void handleMessage(Message msg) { 
      if (msg.what == SPLAH) { 
       Splash s = mActivity.get(); 
       if (s != null) { 
        Intent menuIntent = new Intent("com.example.Main"); 
        s.startActivity(menuIntent); 
        s.finish(); 
       } 
      } 
     } 
    } 
} 
+0

Идеальное решение для заданного вопроса. – Santhosh

Смежные вопросы