Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/218.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 显示onCreate中的活动 问题描述_Java_Android_Android Activity - Fatal编程技术网

Java 显示onCreate中的活动 问题描述

Java 显示onCreate中的活动 问题描述,java,android,android-activity,Java,Android,Android Activity,我的应用程序中有两个活动main活动和BannerActivity。从主活动开始,我在onCreate方法中启动BannerActivity。但我首先看到的是MainActivity屏幕,然后是banneActivity屏幕 问题: 如何使BannerActivity首先显示,倒计时后计时器将停止,BannerActivity将在main activity进入屏幕后关闭 主要活动 实用性 尝试使用这种方式首先需要加载xml布局 requestWindowFeature(Window.FEATUR

我的应用程序中有两个活动
main活动
BannerActivity
。从主活动开始,我在
onCreate
方法中启动
BannerActivity
。但我首先看到的是
MainActivity
屏幕,然后是
banneActivity
屏幕

问题: 如何使
BannerActivity
首先显示,倒计时后计时器将停止,
BannerActivity
将在
main activity
进入屏幕后关闭

主要活动 实用性
尝试使用这种方式首先需要加载xml布局

requestWindowFeature(Window.FEATURE_NO_TITLE);

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_banner);
 getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
                         WindowManager.LayoutParams.FLAG_FULLSCREEN);
或者试着放进清单,比如

 <activity
        android:name=".BannerActivity"
         android:label="@string/app_name"
         android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
           >


首先运行BannerActivity,然后在下拉菜单中运行MainActivity,而不是BannerActivity.this.finish()

您可以从BannerActivity开始,然后在时间到期时,转到MainActivity,并使用此意向标志清除历史堆栈(这样您就不能使用back按钮返回BannerActivity)


你需要启动屏幕。试试这个:

首先启动
BanerActivity
。并使其
onCreate
类似

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        Thread welcomeThread = new Thread() {

            int wait = 0;

            @Override
            public void run() {
                try {
                    super.run();

                    while (wait < 5000) { //Wait of 5 seconds
                        sleep(500);
                        wait += 500;
                    }
                } catch (Exception e) {

                } finally {

                    Intent i = new Intent(BanerActivity.this,
                            MainActivity.class);
                    startActivity(i);
                    finish();
                }
            }
        };
        welcomeThread.start();
    }
@覆盖
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
线程welcomeThread=新线程(){
int wait=0;
@凌驾
公开募捐{
试一试{
super.run();
而(等待<5000){//等待5秒
睡眠(500);
等待+=500;
}
}捕获(例外e){
}最后{
意向i=新意向(BanerActivity.this,
主要活动(课堂);
星触觉(i);
完成();
}
}
};
welcomeThread.start();
}

希望这能有所帮助。

交换清单上的活动,以决定先运行哪个活动:

    <activity
        android:name="com.yourpackagename.MainActivity"
        android:label="@string/app_name" >
    </activity>
    <activity
        android:name="com.yourpackagename.BannerActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

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

BannerActivity应该有
标记,并设置为Main和Launcher作为示例。这将使横幅活动成为启动应用程序时的初始活动

之后,您只需实现倒计时,并在计时器结束时启动MainActivity


希望这有帮助,祝你好运^ ^

你也可以在横幅活动中这样做

在banner活动的oncreate方法中使用此代码

Handler handler = new Handler();
    handler.postDelayed(new Runnable() {

        public void run() {

            finish();
        }
    }, 2000);

最简单的解决方案是将
BannerActivity
设置为启动器活动,并将
倒计时
修改为

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

然后调整
manifest
文件,使
BannerActivity
成为
launcher活动
,并将其从
main活动
中删除。您需要一个SplashScreen:


你为什么不把活动作为你的主要活动呢?然后,您可以在此处设置计时器停止后启动MainActivity的意图…@ViTO您只需按照MainActivity中的要求替换setContentView即可。。检查此链接。可能会对你有帮助。你为什么需要while循环?你不能只写线程吗?睡眠(5000)是的。我只是从我的工作代码中复制了它。没有修改:)@blackbelt
    <activity
        android:name="com.yourpackagename.MainActivity"
        android:label="@string/app_name" >
    </activity>
    <activity
        android:name="com.yourpackagename.BannerActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
Handler handler = new Handler();
    handler.postDelayed(new Runnable() {

        public void run() {

            finish();
        }
    }, 2000);
 @Override
 public void onFinish() 
 {
         Intent mainIntent = new Intent(this, MainActivity.class);
         startActivity(mainIntent); 
         finish();
 }
public class GameSplash extends Activity {

// time to wait on the splash screen
private static final int SPLASH_SCREEN_DELAY = 3000;

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

    new Thread() {
        @Override
        public void run() {
            try {
                // do any heavy initialization here

                // wait a few seconds before going to the next screen
                sleep(SPLASH_SCREEN_DELAY);
            }
            catch (InterruptedException e) {

            }
            catch (Exception e) {

            }
            finally {
                // start the level selection screen
                Intent intentSelect = new Intent(GameSplash.this, GameSelect.class);
                startActivity(intentSelect);
            }
        }
    }.start();

}

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    // ignore any key press on the splash screen
    return true;
}

}