У меня есть TabActivity, который имеет две вкладки. Я загружаю отдельную деятельность на каждой вкладке (мероприятие A & B). Активность А, загруженная в вкладку 1, имеет некоторые элементы управления и a ListView. Я использую AsyncTask для загрузки данных из веб-службы для этого ListView. Я должен был загрузить другое действие, когда пользователь нажал на элемент ListView, но этот новый Activity C должен быть загружен в одну и ту же выбранную вкладку.Как использовать asynctask в android-support-v4.jar Фрагмент?
Я искал в Интернете и обнаружил, что могу использовать ActivityGroup ... но в то же время я нашел, что его устарело. Таким образом, использование совместимости Android-поддержка-v4 Frangment были предложены ..
Я скачал, что андроид-поддержка-v4.jar и посмотрел на FragmentTabs образец, я получил его, как я могу использовать фрагменты даже в Android 2.1 .... поэтому я заменил две деятельности, которые я показывал в закладках, с двумя Фрагменты
Но теперь я не знаю, как обращаться с последующей ситуации:
ListView & Другие элементы управления не отображаются, когда я запускаю следующий код.
я должен позвонить AsyncTask ... это займет время, чтобы получить & синтаксического анализа XML-данных с сервера и фрагмента onCreateView называется раньше ... так как я могу установить ListView в фрагмента после его onCreateView называется?
После элемента ListView щелкает, мне придется загрузить другой фрагмент C в той же вкладке ... как я могу этого достичь?
Код для моего фрагмента выглядит следующим образом:
public class UpdatesFragment extends Fragment implements IFeedReceiver {
ArrayList<Feed> _feeds;
Integer _currentPage = 1;
ListView _lvUpdates;
UserMessage _userMessage;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getFeeds();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.updates, container, false);
this._lvUpdates = (ListView)v.findViewById(R.id.listUpdates);
return v;
}
private void getFeeds() {
FeedsCollectorAsyncTask task = new FeedsCollectorAsyncTask(
getActivity(), this._currentPage);
task.execute();
}
//This method is called from AsyncTask upon receiving & parsing data. So i m trying to populate my ListView here
@Override
public void onFeedReceived(ArrayList<Feed> feeds) {
FeedsAdapter adapter = new FeedsAdapter(getActivity(),
R.layout.feed_list_item, this._feeds);
this._lvUpdates.setAdapter(adapter);
// Load detail on item click
this._lvUpdates.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int index,
long id) {
}
});
}
}
Главная Tab активность XML выглядит следующим образом.
<?xml version="1.0" encoding="utf-8"?>
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/tabhost"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="5dp">
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_weight="0"/>
<FrameLayout
android:id="@+android:id/realtabcontent"
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="1"/>
<TabWidget
android:id="@android:id/tabs"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="-6dp"/>
</LinearLayout>
И наконец ...
public class PlayMakerActivity extends FragmentActivity {
/** Called when the activity is first created. */
TabHost tabHost;
TabManager mTabManager;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Resources res = getResources(); // Resource object to get Drawables
// TabHost tabHost = getTabHost(); // The activity TabHost
tabHost = (TabHost) findViewById(android.R.id.tabhost);
tabHost.setup();
mTabManager = new TabManager(this, tabHost, R.id.realtabcontent);
mTabManager.addTab(tabHost.newTabSpec("Upudates").setIndicator("Updates"),
UpdatesFragment.class, null);
}
}
//also included the following AS It IS
public static class TabManager implements TabHost.OnTabChangeListener {
....
....
....
}
Вы можете указать мне на какой-то пример. Ваша помощь очень ценится !.
Большое спасибо за этот подробный ответ. У меня были другие проблемы, но одно из их решений включало то, что предложили. Так что я буду принимать его как ответ .. еще раз спасибо – Aamir
Без проблем, рад, что я мог бы помочь каким-то образом парню. – RonMon