2014-11-12 4 views
0

Я построил макет программно в этом классе: TableMainLayout.Синхронизированная компоновка в asyncTask

Перед просмотром этого макета загрузите данные из AsyncTask. Когда я закончил загрузку макета, я хочу, чтобы вы всегда в AsyncTask предварительно загрузили макет для следующего представления.

Мне нужно найти способ синхронизации, иначе я расстаюсь с намерением, когда он не закончит загрузку макета.

Я лучше объяснить с кодом:

@Override 
    protected String doInBackground(String... params) { 
     TableMainLayout layout = new TableMainLayout(); 
        synchronized (??? ) { 
         Intent iData = new Intent(context, ActionBarTabs.class); 
         context.startActivity(iData); 
        } 

    } 

То, что я должен поставить вместо знаков вопроса?

Или у вас есть другие советы? Короче говоря, я должен дождаться, когда этот класс будет инициализирован, прежде чем вы начнете делать намерение.

благодарит

+0

Что делать TableMainLayout? Какая связь с ActionBarTabs? Вы не должны запускать активность из потока, который не является потоком пользовательского интерфейса. – ToYonos

+0

TableMainLayout создайте макет для следующего вида. это особая вещь, поэтому мне пришлось создавать ее программно. Проблема в том, что, когда слишком много данных, прежде чем вы увидите черный экран, а затем, когда он закончит показывать представление. Поэтому, чтобы этого избежать, я бы загрузил первый класс TableMainLayout. – uynva

+0

Когда новый TableMainLayout() закончен, макет загружен, правильно? – ToYonos

ответ

0

Вы можете попробовать это:

@Override 
protected Void doInBackground(Void... params) 
{ 
    // Loading the layout 
    TableMainLayout layout = new TableMainLayout(); 
} 

@Override 
protected void onPostExecute(Void result) 
{ 
    // The layout is loaded, starting the activity 
    Intent iData = new Intent(context, ActionBarTabs.class); 
    context.startActivity(iData); 
} 
+0

ОК, я глуп. Благодаря ! – uynva

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