不首先调用MainActivity,在android中调用另一个活动

时间:2012-09-26 10:48:28

标签: android multithreading

我正在制作一个应用程序,我必须在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" />

6 个答案:

答案 0 :(得分:0)

像这样使用意图

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

答案 1 :(得分: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)  
            {  

            }  

        }  
      }  

因为如果您启动与威胁并行的Activity,那么它将毫无延迟地继续前进,并且线程将在后台运行。所以在runonuithread中添加startactivity代码。像上面一样。

它可能适合你。

答案 2 :(得分: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();

答案 3 :(得分: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);
}
}

答案 4 :(得分:0)

如果您只需要显示欢迎活动5秒钟,请修改您的主题。删除并插入

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

在runnable内部。

答案 5 :(得分: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);

}
相关问题