2014-06-25 129 views
0

在我的android應用程序中,有一個歡迎屏幕。當我將USB電纜連接到計算機並進行測試時,它會顯示。 但是,當我在手機中再次打開應用程序(一旦安裝完成)後,它不會顯示歡迎屏幕。它直接進入第二個活動。請幫我解決一下這個。當應用程序第二次運行時,我的歡迎屏幕不顯示

這是第一個屏幕的代碼。

public class MainActivity extends Activity { 

    Intent i; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     new Timer().schedule(new TimerTask(){ 
      public void run() { 
       startActivity(new Intent(MainActivity.this, MainMenu.class)); 
      } 
     }, 2000 /*amount of time in milliseconds before execution*/); 
    } 



    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.activity_main, menu); 
     return true; 
    } 

} 

我想在應用程序每次打開時顯示歡迎屏幕。

非常感謝您的回覆。實際上,當我在MainMenu.java類中評論此方法時,所有解決方案都可以正常工作。 (第二活動)

@Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
     if ((keyCode == KeyEvent.KEYCODE_BACK)) 
     { 
      AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
        context); 

       // set title 
       alertDialogBuilder.setTitle("Do you want to exit from Cooparate LOLC App?"); 

       // set dialog message 
       alertDialogBuilder 
        .setMessage("Are you sure !") 
        .setCancelable(false) 
        .setPositiveButton("Yes",new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog,int id) { 
          // if this button is clicked, close current activity 
          Intent startMain = new Intent(Intent.ACTION_MAIN); 
          startMain.addCategory(Intent.CATEGORY_HOME); 
          startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
          startActivity(startMain); 
         } 
         }) 
        .setNegativeButton("No",new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog,int id) { 
          // if this button is clicked, just close the dialog box and do nothing 
          dialog.cancel(); 
         } 
        }); 

        // create alert dialog 
        AlertDialog alertDialog = alertDialogBuilder.create(); 

        // show it 
        alertDialog.show(); 
       } 
     return super.onKeyDown(keyCode, event); 
    } 

但是我想在按下後退按鈕時出現一個對話框,就像上面的方法一樣。我怎樣才能完成這兩項任務。

  1. 出現歡迎屏幕每次我打開App
  2. 彈出一個對話框,當我按下後退按鈕
+0

你可以發佈你的清單? –

+0

下面的答案之一肯定會有效。只是想指出,您需要包含finish(),以便在移動到主要活動後飛濺活動完成,以便用戶不會後退並達到飛濺。 –

回答

0

我的猜測是,你可能不正確的「返回」按鈕關閉你的應用程序。 如果通過按下「home」按鈕關閉它,它只會被暫停和停止。正如你可以從diagram看到的那樣,當你再次打開它時,onRestart() - > onStart()被調用,但不是onCreate(),所以沒有歡迎屏幕出現!

+0

是的。當我在MainMenu(第二個活動)中按下後退按鈕時,出現對​​話框以表明我是否要關閉該應用程序。這就是它關閉應用程序的方式。 – Isuru

+0

當我評論OnKeyDown()方法時,它完美地工作。 – Isuru

0

你可以用下面的方式做到這一點,

首先聲明類

private class CountDown extends CountDownTimer 
{ 
    public CountDown(long millisInFuture, long countDownInterval) {super(millisInFuture, countDownInterval);} 

    @Override 
    public void onFinish() 
    { 
     startActivity(new Intent(MainActivity.this, MainMenu.class)); 
    } 

    @Override 
    public void onTick(long arg0) {} 

然後調用它的onCreate()方法

private CountDown countDown; 
protected void onCreate(Bundle savedInstanceState) 
{ 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     countDown = new CountDown (2000,1000); 
     countDown.start(); 
} 

這必將每次運行。

0

試試這種方式,希望這會幫助你解決你的問題。

new Handler().postDelayed(new Runnable() { 
    @Override 
    public void run() { 
    startActivity(new Intent(MainActivity.this, MainMenu.class)); 
    } 
},2000); 
0

或者你可以嘗試使用這種

private Handler handler; 
private Runnable runnable; 

//在OnCreate()使用此

handler = new Handler(); 
    runnable = new Runnable() 
    { 
     public void run() 
     { 
      startActivity(new Intent(MainActivity.this, MainMenu.class)); 
      finish(); 
     } 
    }; 
    handler.postDelayed(runnable, 3000); 
0
public class MainActivity extends Activity { 

    private final int SPLASH_DISPLAY_LENGHT = 2000; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

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

      @Override 
      public void run() { 
       Intent i = new Intent(MainActivity.this, HomeActivity.class); 
       startActivity(i); 
       finish(); 
      } 
     }, SPLASH_DISPLAY_LENGHT); 
    } 
} 

,不要忘記到活動添加到您的清單

<activity android:name="HomeActivity"></activity> 
0
Use handler instead of timer 

    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 your app main activity 
       startActivity(new Intent(MainActivity.this, MainMenu.class)); 

       // close this activity 
       finish(); 
      } 
     }, 2000); 

的manifest.xml

<intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 

使用清單活動這個意圖過濾

+0

感謝您的回覆。但是當它第二次打開時,它再次加載第二個屏幕。 – Isuru

+0

@Isuru你可以發佈你的manifest.xml – Boopathi

相關問題