Обновление представлений sub Операций TabActivity от фонового процесса

Я использую a TabActivity (Main) с 3 TabSpecs я использую Намерения для содержания этих 3 Вкладок TabA, TabB, TabC например.

Все эти операции вкладки используют общие данные, который хранится в SharedPreferences

В Main TabActivity У меня есть меню параметров, которое имеет опцию обновления.

@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu, menu);
return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case R.id.refresh_menu:
        new updateCommonDataFromWeb().execute();

    ...
    }
}

это обновление использует AsyncTask (updateCommonDataFromWeb) для перезагрузки общих данных от сети.

Мне нужен способ сказать 3 операциям вкладки обновлять свои представления и восстанавливать их содержание от недавно загруженных данных.

Когда операции вкладки сначала создаются, они загружают данные из SharedPreferences как так:

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

        SharedPreferences prefs = getSharedPreferences(this.getString(R.string.prefs_name), 0);
        String usage_data = prefs.getString("common_data", "");
    }
}

Я думал о создании общепринятой методики на каждой из операций вкладки как.... reloadViewData()

Я думал, возможно, что я мог использовать менеджера по действию от Main TabActivity получить действие текущей вкладки как так:

String tabTag = tabHost.getCurrentTabTag();
Activity activity = getLocalActivityManager().getActivity(tabTag);
# then call the reloadData() method of the tab activity
activity.reloadViewData();

К сожалению, я не могу заставить этот подход работать, пока activity корректный экземпляр Activity вместо a TabA,TabB или TabC

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

Я также читал много о не использовании Операций для содержания вкладки вместо этого с помощью представлений. Однако я не знаю что представление использовать для замены мой <RelativeLayout /> поскольку я не могу использовать свой R.layout.* как представления.

1
задан meagar 2 May 2012 в 18:38
поделиться

1 ответ

Вы можете расширить Activity и сделать так, чтобы все дочерние действия унаследовали от вашей расширенной активности, так как таким образом вы реализуете тот же код (обработка службы) в 1 действии (родительском).

Activity -> MyParentActivity -> MyChildActivity1

Таким образом вы сможете преобразовать все свои дочерние действия в MyParentActivity и запустить свой собственный метод (который вы хотите реализовать)

0
ответ дан 2 September 2019 в 22:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: