1

スレッドコードなしでスプラッシュ画面を実行すると、スプラッシュ画面の背景が表示されますが、スレッドを介して背景画像を起動すると、スプラッシュ画面が表示されません。

私のsplash.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent" 
    android:background="@drawable/splash"
>
</LinearLayout>

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="travis.com"
    android:versionCode="1"
    android:versionName="1.0">
    <uses-sdk android:minSdkVersion="8" />
    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <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=".TheNewBostonActivity"
            android:label="@string/app_name">
            <intent-filter>
                <action android:name="com.thenewboston.travis.STARTINGPOINT" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
    </application>
</manifest>

スプラッシュ.java:

package travis.com;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;

public class Splash extends Activity {
    @Override
    protected void onCreate(Bundle TravisLoveBeacon) {
    // TODO Auto-generated method stub
        super.onCreate(TravisLoveBeacon);
        setContentView(travis.com.R.layout.splash);

        Thread timer = new Thread() {
            public void run() {
                try {
                    sleep(5000);
                }
                catch(InterruptedException e) {
                    e.printStackTrace();
                }
                finally {
                    Intent openstatingpoint = new Intent("com.thenewboston.travis.STARTINGPOINT");
                    startActivity(openstatingpoint);
                }
            }
        };
        timer.run();
    }
}
4

2 に答える 2

1

使用してみてください

Thread splashTimer = new Thread() {
        public void run() {

            try {



                    sleep(5000);


                // Advance to the next screen.
                startActivity(new Intent(SplashActivity.this,
                        HomeActivity.class));//}


            } catch (Exception e) {
                Log.e("ex", e.toString());
            } finally {
                finish();
            }
        }
    };
    splashTimer.start();
于 2012-04-28T11:22:28.680 に答える
0

あなたのfinallyブロックで以下のコードを試してください:

finish();
Intent mainIntent = new Intent().setClass(Splash.this, nextscreen.class);
startActivity(mainIntent);
于 2012-04-28T11:20:39.600 に答える