【问题标题】:android layout not displayedandroid布局不显示
【发布时间】:2015-08-01 18:58:43
【问题描述】:

我无法显示主要活动的布局:

我用 ImageView 创建了一个 ActivityA。

在 onCreate() 中,我启动了一个 AsyncTask,它从 Internet 检索内容,并打开一个 ActivityB。

当我启动我的应用程序时,它会立即显示 ActivityB。

public class ActivityA extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        MyTask mytask = new MyTask();
        mytask.execute();

    }

}

我的 MainActivity xml 文件如下:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/loadingPanel"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <ImageView
        android:id="@+id/home_page"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:src="@drawable/ic_home_page" />

    <ProgressBar
        android:id="@+id/marker_progress"
        style="?android:attr/progressBarStyle"
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:layout_gravity="center_vertical|center_horizontal"
        android:indeterminate="true" />

</RelativeLayout>

ProgressBar 用于显示 AsyncTask 的加载过程。

感谢您的帮助

【问题讨论】:

  • 显示您开始活动 B 的位置/方式。最有可能直接在调用任务之后
  • 显示 AsyncTask 代码。
  • 哪个Activity不显示布局? A 还是 B?
  • @Joseph82 没有显示的是 ActivityA。
  • @codeMagic,我在onPostExecute()中启动ActivityB,在doInBackground()中执行网络调用后

标签: android android-layout android-asynctask


【解决方案1】:
public class ActivityA extends Activity {
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            MyTask mytask = new MyTask();
            mytask.execute();
        }
    }

    private class MyTask extends AsyncTask<String, String, String> {

        @Override
        protected String doInBackground(String... params) {
            // code for retrieve contents from Internet
        }

        @Override
        protected void onPostExecute(String result) {
            // cancel ProgressBar and start activity B here like
            Intent i = new Intent(A.this, B.class);
            startActivity(i);
        }

        @Override
        protected void onPreExecute() {

            // showing ProgressBar
        }

    }

别忘了提到 A 活动作为启动器。 我希望它能帮助你解决这个问题。

【讨论】:

  • 谢谢您的回答...这就是我实际上正在做的...但它似乎仍然不起作用...会不会是临时性的问题? Asynctask 执行得如此之快,以至于我们看不到第一个布局。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-02
  • 2016-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多