Java Android启动屏幕显示活动
我正在创建一个android应用程序,当我在我的三星galaxy上调试它时,Splash活动会首先加载,这是应该的,但在完成Splash活动后,应用程序会崩溃/停止。线程休眠5秒后,它不会转到MainActivity活动。有人知道问题的原因吗?另外,在我尝试调试应用程序并将其加载到手机上后,该应用程序甚至没有出现。顺便说一下,我正在使用Eclipse。它在手机上的“我的应用程序管理器”中显示应用程序,但在“我的应用程序”屏幕中不显示图标 以下是我的Splash.java:Java Android启动屏幕显示活动,java,android,Java,Android,我正在创建一个android应用程序,当我在我的三星galaxy上调试它时,Splash活动会首先加载,这是应该的,但在完成Splash活动后,应用程序会崩溃/停止。线程休眠5秒后,它不会转到MainActivity活动。有人知道问题的原因吗?另外,在我尝试调试应用程序并将其加载到手机上后,该应用程序甚至没有出现。顺便说一下,我正在使用Eclipse。它在手机上的“我的应用程序管理器”中显示应用程序,但在“我的应用程序”屏幕中不显示图标 以下是我的Splash.java: package com
package com.example.mihirsandroidapp;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
public class Splash extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.splash);
Thread timer = new Thread(){
public void run(){
try{
sleep(5000);
} catch (InterruptedException e){
e.printStackTrace();
}finally{
Intent openMainActivity = new Intent("com.example.mihirandroidsapp.MAINACTIVITY");
startActivity(openMainActivity);
}
}
};
timer.start();
}
@Override
protected void onPause() {
super.onPause();
finish();
}
}
这是我的舱单:
<?xml version="1.0" encoding="utf-8"?>
哦。。我从哪里开始。。让我们看一下所有问题: 1.修改你的舱单。绝对不是申报活动的正确方式。下面是它的外观:
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="19" />
<application
android:debuggable="true"
android:allowBackup="true"
android:icon="@drawable/cartooncat"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".Splash"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
</activity>
</application>
3不要在onPause中调用finish-您中断了本机活动生命周期流。开始新活动后立即调用finish:
Intent openMainActivity = new Intent(Splash.this, MainActivity.class);
Intent openMainActivity = new Intent(Splash.this, MainActivity.class);
startActivity(openMainActivity);
finish();
4不创建单独的线程,只需创建一个处理程序并在那里以5秒的延迟后运行:
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
//this will be called after 5 seconds delay
}
}, 5000);
以下是完整的文件:
public class Splash extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.splash);
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
Intent openMainActivity = new Intent(Splash.this, MainActivity.class);
startActivity(openMainActivity);
finish();
}
}, 5000);
}
如果没有帮助-我们肯定需要查看logcat输出…哦。。我从哪里开始。。让我们看一下所有问题: 1.修改你的舱单。绝对不是申报活动的正确方式。下面是它的外观:
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="19" />
<application
android:debuggable="true"
android:allowBackup="true"
android:icon="@drawable/cartooncat"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".Splash"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
</activity>
</application>
3不要在onPause中调用finish-您中断了本机活动生命周期流。开始新活动后立即调用finish:
Intent openMainActivity = new Intent(Splash.this, MainActivity.class);
Intent openMainActivity = new Intent(Splash.this, MainActivity.class);
startActivity(openMainActivity);
finish();
4不创建单独的线程,只需创建一个处理程序并在那里以5秒的延迟后运行:
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
//this will be called after 5 seconds delay
}
}, 5000);
以下是完整的文件:
public class Splash extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.splash);
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
Intent openMainActivity = new Intent(Splash.this, MainActivity.class);
startActivity(openMainActivity);
finish();
}
}, 5000);
}
如果没有帮助-我们肯定需要查看logcat输出…我也遇到了同样的问题。。。。我认为你的代码是完美的应用程序 你只要在splash活动类的意图创建中尝试一下 Intent openMainActivity=newintentandroid.Intent.action.MAIN//主要是你想开始的
//接下来,在当前活动之后,我面临着同样的问题。。。。我认为你的代码是完美的应用程序 你只要在splash活动类的意图创建中尝试一下 Intent openMainActivity=newintentandroid.Intent.action.MAIN//主要是你想开始的
//接下来,在当前活动之后如果您准备在绘图性能上妥协,那么实现这一点的一个简单方法是使用要用作窗口背景的启动图像定义自定义主题,并将此自定义主题用作应用程序主题 styles.xml
<resources>
<style name="CustomTheme" parent="android:Theme">
<item name="android:windowBackground">@drawable/background_image</item>
<item name="android:windowNoTitle">true</item>
</style>
</resources>
如果要在绘图性能上做出妥协,一个简单的方法是使用要用作窗口背景的飞溅图像定义自定义主题,并将此自定义主题用作应用程序主题 styles.xml
<resources>
<style name="CustomTheme" parent="android:Theme">
<item name="android:windowBackground">@drawable/background_image</item>
<item name="android:windowNoTitle">true</item>
</style>
</resources>
我使用以下代码添加了启动屏幕:
public class SplashActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.splash_layout);
initConstatnts();// method for intilizing any constants
new Thread(new Runnable() {
@Override
public void run() {
if (!isFinishing()) // checking activity is finishing or not
{
try {
Thread.sleep(3000);//delay
Intent i = new Intent(getBaseContext(),
HomeActivity.class);
startActivity(i);
finish();
}
catch (InterruptedException e)
{
e.printStackTrace();
}
}
}
}).start();
}
private void initConstatnts() {
}
}
我使用以下代码添加了启动屏幕:
public class SplashActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.splash_layout);
initConstatnts();// method for intilizing any constants
new Thread(new Runnable() {
@Override
public void run() {
if (!isFinishing()) // checking activity is finishing or not
{
try {
Thread.sleep(3000);//delay
Intent i = new Intent(getBaseContext(),
HomeActivity.class);
startActivity(i);
finish();
}
catch (InterruptedException e)
{
e.printStackTrace();
}
}
}
}).start();
}
private void initConstatnts() {
}
}
所有你需要的启动屏幕 SplashActivity.java 在drawables中创建此bg_splash.xml 在styles.xml中创建自定义主题
<style name="SplashTheme" parent="Theme.AppCompat.NoActionBar">
<item name="android:windowBackground">@drawable/bg_splash</item>
</style>
最后在AndroidManifest.xml中指定活动的主题
<activity
android:name=".activities.SplashActivity"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:theme="@style/SplashTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
干杯。启动屏幕所需的一切 SplashActivity.java 在drawables中创建此bg_splash.xml 在styles.xml中创建自定义主题
<style name="SplashTheme" parent="Theme.AppCompat.NoActionBar">
<item name="android:windowBackground">@drawable/bg_splash</item>
</style>
最后在AndroidManifest.xml中指定活动的主题
<activity
android:name=".activities.SplashActivity"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:theme="@style/SplashTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
干杯。按照以下步骤创建自己的启动屏幕
创建Activity1和XML文件
设计XML文件并放置欢迎消息
克里特岛活动2和XML文件。
启动活动1
在Activity1中启动一个线程并睡眠5秒钟
从线程启动Activity2
Android中没有所谓的现成启动屏幕。我们可以通过以上步骤实现这一点
在一行中,启动Activity1等待5秒,然后启动Activity2
所以用户会觉得第一个屏幕是启动屏幕
您可以从下面的链接下载完整的代码
按照以下步骤创建自己的启动屏幕
创建Activity1和XML文件
设计XML文件并放置欢迎消息
克里特岛活动2和XML文件。
启动活动1
在Activity1中启动一个线程并睡眠5秒钟
从线程启动Activity2
Android中没有所谓的现成启动屏幕。我们可以通过以上步骤实现这一点
在一行中,启动Activity1等待5秒,然后启动Activity2
所以用户会觉得第一个屏幕是启动屏幕
您可以从下面的链接下载完整的代码
@SE是关于编程的设计、架构、算法和模式方面的,请参阅。堆栈溢出是针对您在此处遇到的调试和实现问题
从logcat输出中获得的确切异常。第二,如果要在自己的应用程序中打开活动,则实际上不需要使用基于字符串的意图。有一个版本的Intent构造函数接受一个类实例,你应该在你的应用程序内部使用它。为什么你让用户等待五秒钟看一个糟糕的启动屏幕,他们不在乎什么时候可以使用你的应用程序?@mibirb关于安卓启动屏幕的一条建议。用户不喜欢它们。这个论坛上的很多人都不喜欢他们。而伟大的谷歌并不喜欢它们。不推荐使用。此外,它们在Android体系结构和生命周期中也不能很好地工作。这不是iOS。在Android上没有简单的方法来制作一个好的启动屏幕,例如,当繁重的启动操作正在进行时,一个可以娱乐用户的屏幕。大多数例子,比如这里的例子,只是通过显示一个启动活动来延迟主要活动几秒钟。@mihirb Programmers.SE是关于编程的设计、架构、算法和模式方面的,请参阅。堆栈溢出是针对您在此处遇到的调试和实现问题。首先,请发布从logcat输出中获得的确切异常。第二,如果要在自己的应用程序中打开活动,则实际上不需要使用基于字符串的意图。有一个版本的Intent构造函数接受一个类实例,你应该在你的应用程序内部使用它。为什么你让用户等待五秒钟看一个糟糕的启动屏幕,他们不在乎什么时候可以使用你的应用程序?@mibirb关于安卓启动屏幕的一条建议。用户不喜欢它们。这个论坛上的很多人都不喜欢他们。而伟大的谷歌并不喜欢它们。不推荐使用。此外,它们在Android体系结构和生命周期中也不能很好地工作。这不是iOS。在Android上没有简单的方法来制作一个好的启动屏幕,例如,当繁重的启动操作正在进行时,一个可以娱乐用户的屏幕。大多数例子,比如这里的例子,只是通过显示一个splash活动几秒钟来延迟主要活动。哦。。我从哪里开始+我感谢你的评论。但也因为这是一个很好的答案,涵盖了所有的基础。它帮助我理解了闪屏。谢谢你,帕维尔。。我从哪里开始+我感谢你的评论。但也因为这是一个很好的答案,涵盖了所有的基础。它帮助我理解了闪屏。谢谢你,帕维尔。