-1

我试图从活动一跳到活动二,但在 1 秒后。所以我使用了 Thread.sleep(1000),然后活动二出现在前面。它工作得很好,但问题是我在活动一中给出了一个图像背景,但没有显示。

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

        try {

        Thread.sleep(1000);
        Intent i=new Intent(Activity1.this,Activity2.class );
        startActivity(i);
        } catch (InterruptedException e) {

            e.printStackTrace();
        }

    }

另外,我在活动二中包含了一个按钮,它具有跳转到活动一的功能,在这种情况下,图像显示 1 秒钟,但不是我第一次打开我的应用程序时。

4

2 回答 2

0

在 onCreate() 完成之前,您的 UI 不会构建。因此,如果您在 onCreate() 中启动活动 2,您将永远不会看到活动 1。

反而:

@Override
void onAttachedToWindow()  {
    // start activity 2
}

正如其他人在评论中所说,您永远不应该在 UI 线程上使用睡眠。事实上,我希望 Java 让使用 sleep 变得更加困难,因为它被使用得太多,而且经常作为一种快速修复,避免了正确的解决方案。

在这种情况下,您应该在一秒钟后使用 anAsyncTask来启动第二个活动。

于 2012-11-17T20:45:00.700 回答
0

您可以创建 RelativeLayout 并显示/隐藏它并仅使用 1 个活动

public class MyView extends RelativeLayout{

 private ImageView view = ....;

 ....
 view.setVisibility(View.VISIBLE);
 ....
 view.setVisibility(View.GONE);

}
于 2012-11-17T20:49:23.017 回答