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;
}
}