2010-11-02 122 views
0

我有两个类Splash.java和Activity2.java!我试过简单的泼码代码:初始屏幕不显示在android

public class Splash extends Activity 
{ 
    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.splash); 
     Thread thread= new Thread() 
     { 
      @Override 
      public void run() 
      { 

        super.run(); 
        startActivity(new Intent(Splash.this,Trial.class)); 
        finish(); 

      } 
     }; 
     thread.start(); 

    } 
} 

在我的清单中,我也给出了条目。我的代码没有错误地运行。的R.layout.splash代码如下:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:gravity="center_horizontal" 
    > 
<ImageView 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:src="@drawable/d" 
android:layout_gravity="center"/> 

</LinearLayout> 

谢谢!

+0

为什么你开始在一个线程中的活动? – Falmarri 2010-11-02 06:27:54

回答

1

你不是真的等待闪屏显示。它会启动,然后你立即调用finish(),然后处理它。

尝试更多的东西一样:

int showSplashFor = 1500;//ms to show splash screen 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.splash); 

    Thread splashScreenTread = new Thread() { 
    @Override 
    public void run() { 
     try { 
     int elapsed = 0; 
     while(elapsed < showSplashFor)) { 
      sleep(100); 
      elapsed += 100; 
     } 
     } catch(InterruptedException e) { 
     } finally { 
     finish(); 
     startActivity(new Intent(Splash.this, Trial.class)); 
     stop(); 
     } 
    } 
    }; 
    splashScreenTread.start(); 
} 


编辑

AndroidManifest.xml
包设置为com.example,并确保两个Splash.javaTrial.java在这个包。

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.example" android:versionCode="1" android:versionName="1.0"> 

设置intent-filter为borh活动AndroidManifest.xml

<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=".Trial"> 
    <intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 
     <category android:name="android.intent.category.DEFAULT" /> 
    </intent-filter> 
</activity> 
+0

我已经尝试了数approches,每个我收到时间:警告:活动尚未开始,目前的任务已经放到了前面,并在此之后我trial.class看起来屏幕 – Alok 2010-11-02 08:11:04

+0

检查,如果你有两个定义activiries AndroidManifest.xml(并确保它具有正确的意图过滤器),检查重复的软件包名称,确保您正在重新编译并在模拟器上重新安装该应用程序,从DDMS或以任何其他方式终止进程确保当您尝试运行它时,它尚未运行,因为此错误意味着Trial.class已在系统上运行。所以也许你可以双重启动它(一次使用意图过滤一次代码) – Vuk 2010-11-02 13:09:46

+2

还有一件事。尝试使用定时器和处理程序,因为在我看来,启动屏幕的新线程是过度杀伤。 – Vuk 2010-11-02 13:11:16

0

我觉得你的闪屏显示,但后立即您展示的“审判”级。

我最常做的是有一个计时器机制。我显示启动画面,并启动计时器。一旦计时器到期,飞溅活动就会关闭,主类(在你的情况下:'试用')就会出现。 这是在我不需要从网页或数据库中加载任何东西的情况下。如果我不得不加载,那么我将它加载到启动画面的活动中一个单独的线程(通过处理程序),一旦它完成加载,我关闭启动画面,并通过传递下载的数据加载主类。

我希望这有助于。

0

在这里,你走了,写了一个教程如何创建一个闪屏的加载时间(10秒):

http://blog.blundell-apps.com/tut-splashscreen-with-progress-bar/

基本上而不是你的线程启动一个ASyncTask,你将一个对你的progressSpinner的引用传入ASyn cTask这将更新它的线程下载资源(或任何你想做的事情,即只需等待10秒)