0

我有一个启动画面,我想在我的主应用程序屏幕之前运行。但是,当计时器结束时,应用程序崩溃。关于为什么会发生这种情况的任何想法?提前致谢。

下面是参考代码

public class Splash extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_splash);

        Thread timer = new Thread() {
            // Whatever is enclosed in the {} of method run(), runs when we
            // start the application
            public void run() {
                try {
                    sleep(2000);

                } catch (InterruptedException e) {
                    e.printStackTrace();

                } finally {

                    Intent openMainScreen = new Intent("com.package.Main_Screen");
                    startActivity(openMainScreen);

                }
            }
        };

        timer.start();
    }
}
4

4 回答 4

1

你为什么不简单地使用这种Intent,

Intent openMainScreen = new Intent(Splash.this,Main_Screen.class);
startActivity(openMainScreen);

并确保您已像这样在清单中添加了活动,

<activity android:name=".Main_Screen">
 </activity>
于 2012-12-06T11:58:27.353 回答
0

写下面的代码

Intent openMainScreen = new Intent(this, MainActivity.class);
startActivity(openMainScreen);

代替

Intent openMainScreen = new Intent("com.package.Main_Screen");
startActivity(openMainScreen);

并将您的 MainActivity 声明到 Androidmanifest.xml 文件中。

<activity
    android:name=".MainActivity"
    android:label="@string/app_name">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />

        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</activity>

它会解决你的问题。

于 2012-12-06T11:58:05.683 回答
0

你是startActivity从不同的地方调用的Thread。你必须从它运行它。UI thread你想要实现的目标可以通过以下方式轻松完成

    public class Splash extends Activity {
        Handler handler;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_splash);
            handler = new Handler();
            handler.postDelayed(new Runnable() {
                public void run() {
                    Intent openMainScreen = new Intent(Splash.this,
                            Main_Screen.class);
                    startActivity(openMainScreen);

                }
            }, 2000);
        }
    }
于 2012-12-06T12:02:09.370 回答
0

你必须这样打电话

Intent openMainScreen = new Intent(ClassName.this, MainActivity.class);
startActivity(openMainScreen);

你必须在清单文件中注册它

    <activity
        android:name=".MainActivity"
        android:label="@string/app_name" >
于 2012-12-06T12:07:19.650 回答