2010-11-02 192 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秒)