0

ウェルカム ページを 5 秒間だけ表示してから、別のアクティビティにリダイレクトする必要があるアプリケーションを作成しています。ただし、別のアクティビティを最初に取得し、エミュレータの戻るボタンをクリックした後に MainActivity を取得しているため、必要なものが得られません。これは正しくありません。誰かが私を助けてくれませんか?

私はあなたの参考のためにいくつかのコードを置いています。特にウェルカム アクティビティとマニフェスト コードです。

 public class Welcome extends Activity   
 {  
    private Runnable runnable;  
    private static final String TAG="Welcome";  

    /** Called when the activity is first created. */  
    @Override  
    public void onCreate(Bundle savedInstanceState)   
    {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.main);  

        runnable=new Runnable() {  

            public void run() {  
                try  
                {  
                    Log.v(TAG,"Going to sleep...");  
                    Thread.sleep(3000);  
                    Log.v(TAG,"Going to wake up...");  

                }  
                catch(Exception e)  
                {  
                    e.printStackTrace();  
                }  
            }  
        };  
        try  
        {  
            Thread t=new Thread(null,runnable);  
            t.start();  
            Intent i=new Intent(this,TabSample.class);  
                startActivity(i);  
        }  
        catch(Exception e)  
        {  

        }  

    }  
  }  

AndroidManifest.xml

<activity
        android:name=".Welcome"
        android:label="Restaurant Application" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

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

main.xml

   <ImageView
       android:id="@+id/imageView1"
       android:layout_width="fill_parent"
       android:layout_height="fill_parent"
       android:layout_alignParentRight="true"
       android:src="@drawable/home" />
4

6 に答える 6

0

これを行うには、ハンドラのみを使用できます。コードはこのようになります

Runnable GotoMenu;
Handler CallMenu = new Handler();

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);       
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
    setContentView(R.layout.splash);

    GotoMenu = new Runnable(){
        public void run(){
            CallMenu.removeCallbacks(GotoMenu);
            Intent i = new Intent(getApplicationContext(), TabSample.class);
            i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            startActivity(i);
            finish();
        }
    };
    CallMenu.postDelayed(GotoMenu, 2000);

}
于 2012-09-26T11:08:03.240 に答える
0

このようにインテントを使用します

Intent i=new Intent(Welcome.this,TabSample.class);  
startActivity(i);  
于 2012-09-26T10:56:28.777 に答える
0

これを試してみてください。

    public class Welcome extends Activity   
     {  
        private Runnable runnable;  
        private static final String TAG="Welcome";  

        /** Called when the activity is first created. */  
        @Override  
        public void onCreate(Bundle savedInstanceState)   
        {  
            super.onCreate(savedInstanceState);  
            setContentView(R.layout.main);  

            runnable=new Runnable() {  

                public void run() {  
                    try  
                    {  
                        Log.v(TAG,"Going to sleep...");  
                        Thread.sleep(3000);  
                        Log.v(TAG,"Going to wake up...");  

                       runOnUiThread(new Runnable() .
                         {

                         @Override
                         public void run() 
                         {
                            Intent i=new Intent(this,TabSample.class);  
                                           startActivity(i);  

                          }
            });


                    }  
                    catch(Exception e)  
                    {  
                        e.printStackTrace();  
                    }  
                }  
            };  
            try  
            {  
                Thread t=new Thread(null,runnable);  
                t.start();  

            }  
            catch(Exception e)  
            {  

            }  

        }  
      }  

アクティビティを脅威と並行して開始すると、遅延なく進行し、スレッドがバックグラウンドで実行されるためです。startactivity コードを runonuithread に入れます。上記のように。

それはあなたのために働くかもしれません。

于 2012-09-26T10:57:30.633 に答える
0

これを試して

 Thread thread = new Thread() {
                public void run() {
                    try {


                        Thread.sleep(5000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    Intent intent = new Intent(Welcome.this, TabSample.class);
                    startActivity(intent);

                    finish();
                }
            };
            thread.start();
于 2012-09-26T10:58:33.987 に答える
0

ウェルカム画面をしばらく表示するために timertask を使用できます。

import java.util.Timer;
import java.util.TimerTask;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Window;
public class Welcome extends Activity {
private long splashDelay = 5000; //5 seconds

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    TimerTask task = new TimerTask()
    {

        @Override
        public void run() {
            finish();
            Intent mainIntent = new Intent().setClass(Welcome.this, TabSample.class);
            startActivity(mainIntent);
        }

    };

    Timer timer = new Timer();
    timer.schedule(task, splashDelay);
}
}
于 2012-09-26T10:58:36.050 に答える
0

Welcomeアクティビティを 5 秒間だけ表示する必要がある場合は、スレッドを変更してください。取り外して挿入

Intent i=new Intent(this,TabSample.class);  
startActivity(i);

内部で実行可能。

于 2012-09-26T11:00:06.860 に答える