Android在活动之间切换

use*_*775 5 android screen switch-statement android-activity

我想做的是一个主屏幕,该屏幕停留5秒钟并进入activity1。当我单击activity1中的按钮时,我进入了activity2。我已经尝试了多次单击该按钮,但是没有切换。主屏幕(5秒)= Main_Activity活动1 = selectpets.java活动2 = fishtank.java

onclick监听器似乎是问题,我不知道这是怎么回事

     Main Activity Code
package com.set.petshome;
import android.os.Bundle;
import android.os.Handler;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.widget.Button;

public class MainActivity extends Activity {
    Button fButton;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //Delay Code after 5 seconds
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                setContentView(R.layout.selectscreen); //where <next> is you target      activity :)
                }
            }, 5000);   
    }
//Delay End
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,Selectpets代码

package com.set.petshome;

import android.app.Activity;
import android.content.*;
import android.os.Bundle;
import android.view.*;
import android.widget.Button;
public class SelectPetsScreen extends Activity  {
    Button fButton;

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

      //Button Fishtank Listener Start

        fButton = (Button) findViewById(R.id.button1);

          //Listening to button event
           fButton.setOnClickListener(new View.OnClickListener() {

                public void onClick(View arg0) {
                    //Starting a new Intent
                    Intent nextScreen = new Intent(getApplicationContext(),  fishtank.class);
                    startActivity(nextScreen);

                }
            });     
        //Button Fishtank Listener End

    }
   }
Run Code Online (Sandbox Code Playgroud)

鱼缸类代码

package com.set.petshome;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.Button;

    public class fishtank extends Activity {
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.ftank);



        }

    }
Run Code Online (Sandbox Code Playgroud)

顺便说一句,在应用程序中没有错误,单击后就没有切换,
非常感谢

cod*_*gic 4

在这里你永远不会切换到下一个Activity,只是改变layout当前的Activity

 new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                setContentView(R.layout.selectscreen); //where <next> is you target      activity :)
                }
            }, 5000);  
Run Code Online (Sandbox Code Playgroud)

而不是setContentView()你需要使用Intent

Intent i = new Intent(MainActivity.this, SelectPetsScreen.this);
startActivity(i);
Run Code Online (Sandbox Code Playgroud)

因为您实际上并没有转到下一个Activity(java 文件),所以您onClick()还没有设置。

编辑

这就是你正在做的事情

public class MainActivity extends Activity {
Button fButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    //Delay Code after 5 seconds
    new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {
            setContentView(R.layout.selectscreen); //where <next> is you target      activity :)
            }
        }, 5000);   
}
Run Code Online (Sandbox Code Playgroud)

这就是你应该做的。run()注意功能上的区别

public class MainActivity extends Activity {
Button fButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    //Delay Code after 5 seconds
    new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {
            Intent i = new Intent(MainActivity.this, SelectPetsScreen.this);
            startActivity(i);
            }
        }, 5000);   
}
Run Code Online (Sandbox Code Playgroud)