2012-11-22 3 views
3

Мне нужно обновить свою деятельность. У меня есть вопрос о том, что мне нужно, чтобы закончить текущую деятельность и перезапустить текущую деятельность. ИЛИ снова предоставить значение каждому виджету. Чтобы избежать перехода я использовал этот кодОбновление/обновление активности

Intent intent = getIntent(); 
overridePendingTransition(0, 0); 
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); 
this.finish(); 

overridePendingTransition(0, 0); 
startActivity(intent); 

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

Есть еще несколько проблем, связанных с одним и тем же 1) С приведенным выше кодом, если я нахожусь на другом экране, я возвращаюсь на этот экран, когда над куском кода работает.

2) Последовательность действий нарушается.

3) Сохранение выбранной вкладки также будет частью проблемы

Даже если я пытаюсь обновить каждую вкладку seperatley, один из моих вкладки имеют WebView. как обновить это, поскольку webview.loadData() не может быть вызван, если нет представления, и поскольку я не на этой вкладке, просмотр не будет отображаться.

Что может быть идеальным способом решения этой проблемы. Любая помощь будет оценена.

ответ

0

Вопрос не был сложным, но решение, которое я хотел, было оптимизировано. Наконец, я сделал второй путь, то есть обновляя каждый компонент. Этот подход позволяет преодолеть проблему нарушения последовательности действий. Для просмотра в Интернете я все еще использую webView.loadData(...).

В общей сложности я вручную поместил каждую вкладку. Если я включу весь свой код, тогда он станет неуклюжим, но все же попытается включить в него столько важных функций.

В моем классе активности, когда мне нужно обновить свою активность, я назвал этот метод.

private void onRefrash() 
{ 
    refreshCurrentActivity(); 

    int selectedTab = getActionBar().getSelectedNavigationIndex(); 
    switch (selectedTab) 
    { 
    case TAB1: 
     fragment1.update(); 
     break; 
    case TAB2: 
     fragment2.update(); 
     break; 
    case TAB3: 
     fragment3.update(); 
     break; 
    }  
Toast.makeText(this, getString(R.string.msg_case_updates_received), Toast.LENGTH_LONG).show(); 
    }      
} 

Каждый фрагмент ранее инициализирован, и метод обновления вызывается для каждой вкладки, в котором я обновляя соответствующий веб-просмотра.

0

Это зависит от вашего варианта использования. Вы снова можете установитьContentView(), чтобы раздувать макет каждый раз. Если вы просто показываете список, вы можете просто вызвать адаптер для отображения списка. Вы должны сделать это для каждого фрагмента в вашей TabActivity.

Чтобы перезагрузить WebView, я бы просто позвонил loadUrl() еще раз.

Что касается запоминания выбранной вкладки, вы должны указать store it, а затем установить текущую вкладку в TabHost.

+0

простой и точный. Спасибо, я дам ему попробовать – Android

+0

Отлично, дайте нам знать, как все идет! – alexfernandez

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