2015-05-20 2 views
0

У меня проблемы с отображением макета моего основного вида деятельности:макет андроида не отображается

Я создаю ActivityA с ImageView.

В onCreate() я запускаю AsyncTask, который извлекает контент из Интернета и открывает 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.

спасибо за помощь

+0

Показать, где/как вы начинаете деятельность B. Скорее всего, сразу после вызова задачи – codeMagic

+1

Показать код AsyncTask. –

+0

Что такое активность, которая не отображает его расположение? A или B? – GVillani82

ответ

0
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 
     } 

    } 

не забыл упомянуть о деятельности в качестве пусковой установки. Надеюсь, это поможет вам решить эту проблему.

+0

Спасибо за ваш ответ ... Это то, что я на самом деле делаю ... но он по-прежнему не работает ... Может быть, проблема временного? Asynctask выполняется так быстро, что мы не видим первый макет. – saloua

Смежные вопросы