Ich habe eine TabActivity, die zwei Registerkarten hat. Ich lade separate Aktivität in jede Registerkarte (Aktivität A & B). Aktivität A, die in Registerkarte 1 geladen wird, hat einige Steuerelemente und ListView. Ich verwende AsyncTask, um Daten von einem Web-Service für diese ListView zu laden. Ich musste eine andere Aktivität laden, wenn Benutzer auf ListView-Element klickte, aber diese neue Aktivität C sollte in derselben ausgewählten Registerkarte geladen werden.Wie verwendet man asynctask in android-support-v4.jar Fragment?
Ich suchte im Internet und fand heraus, dass ich ActivityGroup verwenden kann ... aber zur gleichen Zeit fand ich, dass es veraltet ist. Also mit Android-Unterstützung-v4 Kompatibilität Frangment vorgeschlagen wurden ..
ich heruntergeladen dass android-support-v4.jar und an den FragmentTabs Probe sah, bekam ich es, wie ich Fragmente können auch in Android 2.1 .... so ersetzt ich die beiden Aktivitäten, die ich mit zwei Fragmente in Tabs,
Aber jetzt weiß ich nicht zeigen, wurde, wie die Folge Situationen zu bewältigen:
ListView & Andere Steuerelemente werden nicht angezeigt, wenn ich den folgenden Code ausführe.
ich habe AsyncTask zu nennen ... es einige Zeit dauern wird & Parsen XML-Daten von dem Server zu erhalten und Fragment der onCreateView früher genannt wird ... so wie kann ich den Listview in Fragmente nach seinem onCreateView heißt?
Nach Listview-Elemente geklickt wird, werde ich ein anderes Fragment C innerhalb desselben Registerkarte laden muß ... Wie kann ich das erreichen?
-Code für mein Fragment ist wie folgt:
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) {
}
});
}
}
Haupt Tab Activity XML ist wie folgt.
<?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>
Und schließlich ...
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 {
....
....
....
}
Sie können mich bis zu einem gewissen Beispiel zeigen. Ihre Hilfe wird sehr geschätzt !.
Vielen Dank für diese detaillierte Antwort. Ich hatte andere Probleme, aber eine ihrer Lösungen enthalten, was Sie vorgeschlagen haben. So werde ich es als Antwort akzeptieren .. danke nochmal – Aamir
Kein Problem, froh, ich könnte in irgendeiner Weise helfen, Junge. – RonMon