Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/218.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 5秒后更改布局_Java_Android - Fatal编程技术网

Java 5秒后更改布局

Java 5秒后更改布局,java,android,Java,Android,我的应用程序首先显示一个只包含我的应用程序图标的布局,5秒钟后它应该切换到另一个我定义为另一个XML布局文件的布局,但当我在手机上测试它时,第一个布局显示,5秒钟后应用程序退出。下面是我的代码 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Ti

我的应用程序首先显示一个只包含我的应用程序图标的布局,5秒钟后它应该切换到另一个我定义为另一个XML布局文件的布局,但当我在手机上测试它时,第一个布局显示,5秒钟后应用程序退出。下面是我的代码

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Timer timer;
    timer=new Timer();
    timer.schedule(new TimerTask() {
        @Override
        public void run() {
            setContentView(R.layout.signup);}  },5000);}}
我使用了定时器功能。activity_main是仅包含图像视图的布局xml文件,sign_是包含注册表单的布局xml文件

我在youtube上也看到过同样的事情,但那个家伙在点击按钮后改变了布局,结果成功了。。。。我只把“点击”按钮改为“定时器”


谦恭地要求回答。谢谢

您可以使用布局活动\u main中的任何视图调用postDelayed,如下所示:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    findViewById(R.id.tvHellow).postDelayed(new Runnable() {
        @Override
        public void run() {
            setContentView(R.layout.sign_up);
        }
    }, 5000);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Handler handler = new Handler(Looper.getMainLooper());
    handler.postDelayed(new Runnable() {
        @Override
        public void run() {
           setContentView(R.layout.signup);
        }
    }, 5000);
}

它可以工作。

您也可以使用如下处理程序:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    findViewById(R.id.tvHellow).postDelayed(new Runnable() {
        @Override
        public void run() {
            setContentView(R.layout.sign_up);
        }
    }, 5000);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Handler handler = new Handler(Looper.getMainLooper());
    handler.postDelayed(new Runnable() {
        @Override
        public void run() {
           setContentView(R.layout.signup);
        }
    }, 5000);
}

您需要在UI线程中运行
setContentView
。您可以将其包装在
runOnUiThread
中。有关更多信息,请参阅。您可以从布局中的任何现有视图使用handler感谢您的回答…它起了作用,能够学习handler、looper和Threads感谢您的回答。什么是tvHellow?它只是活动_main中id为=“@id/tvHellow”的文本视图。您可以使用activity_main中的任何视图,因为任何视图在引擎盖下都已经有了自己的处理程序