应用程序第二次运行时,不会显示我的欢迎屏幕

时间:2014-06-25 09:04:21

标签: android android-intent android-activity timertask

在我的Android应用程序中,有一个欢迎屏幕。将USB电缆连接到计算机并进行测试时显示。 但是当我在手机中再次打开应用程序(一旦安装完毕)后,它就不会显示欢迎屏幕。它直接转到第二个Activity。请帮我解决一下这个。

这是第一个屏幕的代码。

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. 每次打开应用程序时出现欢迎屏幕
  2. 按下后退按钮时弹出一个对话框

6 个答案:

答案 0 :(得分: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();
}

这肯定会每次都运行。

答案 1 :(得分:0)

请尝试这种方式,希望这有助于您解决问题。

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

答案 2 :(得分: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);

答案 3 :(得分: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>

答案 4 :(得分: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>

在清单活动中使用此意图过滤器

答案 5 :(得分:0)

我的猜测是,您可能无法使用“后退”按钮正确关闭应用程序。 如果您通过按“主页”按钮关闭它,它将只会暂停和停止。正如您可以从diagram看到的,当您再次打开它时,onRestart() - &gt;调用onStart(),但不调用onCreate(),因此不会出现欢迎屏幕!