13

一定期間後に現在のアクティビティからアクティビティを開始する必要があります。以下のようにコーディングしました。

public class FirstActivity extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_first);


    new Timer().schedule(new TimerTask(){
        public void run() { 
            startActivity(new Intent(FirstActivity.this, SecondActivity.class));
        }
    }, 2000); 
}

しかし、それは機能しません..クラッシュし続けます..私の方法は正しいですか?私のマニフェストファイルは以下の通りです

`

<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="15" />

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name=".FirstActivity"
        android:label="@string/title_activity_first" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name=".SecondActivity"
        android:label="@string/title_activity_second" >
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.example.first.FirstActivity" />
    </activity>
</application>

4

9 に答える 9

20

HandlerclasspostDelayed()メソッドを使用してこれを実行できます。

Handler mHandler = new Handler();
mHandler.postDelayed(new Runnable() {

    @Override
    public void run() {
        //start your activity here  
    }

}, 1000L);

ここで、1000Lは、Runnableクラス内のコードが呼び出されるまでのミリ秒単位の時間です。

これを使用してみてください。

于 2012-11-05T11:25:55.773 に答える
9

runOnUiThreadを使用して、タイマーからアクティビティを開始します。

new Timer().schedule(new TimerTask(){
        public void run() { 
         FirstActivity.this.runOnUiThread(new Runnable() {
            public void run() {
            startActivity(new Intent(FirstActivity.this, SecondActivity.class));
          }
        });
       }
    }, 2000);
于 2012-11-05T11:22:42.627 に答える
1

これを試してみてください。これをアプリのスプラッシュ スクリーンに使用していますが、問題なく動作します。また、コメントで @Venture が指摘したように、アクティビティがマニフェスト ファイルに追加されていることを確認してください。

new Handler().postDelayed(new Runnable() {
    @Override
    public void run() {
        Intent startActivity = new Intent(FirstActivity.this, SecondActivity.class);
        startActivity(startActivity);
        finish();
    }
}, 2000);
于 2012-11-05T11:23:52.990 に答える
1

ありがとうございます...現在は機能しています..問題は、タイマーではなく2番目のアクティビティにあります。「getActionBar().setDisplayHomeAsUpEnabled(true);」をコメントアウトすると 2番目のアクティビティのこれらの行で、機能し始めました。これらの行はコンパイル時にエラーを出すことはありませんが、実行時に問題になります.Thanks.

于 2012-11-06T10:18:16.180 に答える
0

あなたのコードの何が悪いのかわかりませんが、これはうまくいくはずです:

private Handler mHandler = new Handler();
mHandler.postDelayed(mStartActivityTask, 2000);
private Runnable mStartActivityTask= new Runnable() {
    public void run() {
       // Start the Activity
    }
};
于 2012-11-05T11:21:59.223 に答える
0

これを試すことができますか:

Thread toRun = new Thread()

        {
               public void run()
               {
                   try {                      
                    sleep(500);

                     Intent intent = new Intent (FirstActivity.this, SecondActivity.class);
                     startActivity(intent);

                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
               }
        };
        toRun.start();
于 2012-11-05T11:23:03.677 に答える