0

Ich arbeite mit Visual Studio 2015 und Xamarin. Ich habe ein wenig Erfahrung mit Xamarin Android.Xamarin android: Ansicht Pager Fragment wischen WIE TO

, was ich brauche, ist zu tun, dass: eine Anwendung mit 3 Bildschirmen erkennen, wo es möglich ist, zwischen diesen Bildschirmen zu streichen: 1) Bericht Bildschirm 2) Hauptbildschirm 3) Detailbild

ok, i hab eine app mit einem viewPager realisiert und diese drei fragmente => alles funktioniert eigentlich .. :)

Aber das Ziel hat sich geändert, jetzt muss ich zuerst den Hauptbildschirm laden, der eine Liste enthält. Ok, ich mache das mit viewPager.SetCurrentItem (1, wahr);

viewPager.SetCurrentItem(1, true); 

und alle Arbeiten und i zur Swipe oder melden oder Detail

Aber mein letztes Problem dies es, ich brauche, wenn ich auf der Listenansicht klicken Sie auf das Detail-Fragment zu laden .. aber ich kann 't !!!!

Ich habe versucht, einige Manipulation mit FragmentManager.Replace, aber alle meine Test stürzt ab!

// inside listview item click 
DetailFragment detail = new DetailFragment(); 

      // 
      Android.Support.V4.App.FragmentTransaction ft = this.FragmentManager.BeginTransaction(); 
      ft.Replace(Resource.Layout.MainLayout, detail); 

      // 
      ft.AddToBackStack(null); 
      ft.Commit(); 

Ich bin komplett verloren, Entschuldigung für mein Englisch ist es schade!

ich hoffe, Sie verstehen mein Problem, 3 Fragmente in einem ViewPager, laden Sie das zweite Fragment beim Start der App. Klicken Sie auf Listenelement Lade Detail Fragment ...

Wenn einige Leute eine Idee haben?

Dank für Ihre Zeit und Ihre Wissen, dass es

+0

Wenn Ihre App abstürzt, fügen Sie Stack-Traces und Ausnahmebedingungen hinzu. – Cheesebaron

+0

Hallo Cheesebaron Ich habe diese Nachricht, wenn ich meine App ausführen, klicken Sie auf ein Element in der Listenansicht => Java.Lang.IllegalArgumentException: Keine Ansicht für ID 0x7f030003 (SwipeWithoutTab.SwipeWithoutTab: layout/MainLayout) für Fragment DetailFragment {41678a78 # 2 id = 0x7f030003} – tapastoutvu

Antwort

0

Das Problem wirklich schön zu teilen, dass Ihre ersetzen Transaktion, Sie versuchen, eine ID zu ersetzen, die nicht im aktuellen Layout ist.

Sie versuchen, Resource.Layout.MainLayout zu ersetzen. Die Ersetzungstransaktion erwartet eine ID einer Sicht, die sich derzeit in Ihrer Sichthierarchie befindet.

EDIT:

Es ist nicht klar, wie Sie Ihre ViewPager zeigen zu beginnen. Nehmen wir an, es ist aufgeblasen in einem Fragment für sich. Das Fragment wiederum in Resource.Id.content, gezeigt, das ist die Platzhalter Sie verwenden Ihre Fragmente zu zeigen.

Resource.Id.content im Layout in Ihrem Activity aufgeblasen ist, wo Sie Ihr Fragment mit Ihrem ViewPager einrichten. Sie könnten einfach so etwas wie sein:

<?xml version="1.0" encoding="utf-8"?> 
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:local="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/main_frame" 
    android:fitsSystemWindows="true" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
    <FrameLayout 
     android:id="@+id/content" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 
</android.support.design.widget.CoordinatorLayout> 

Das FrameLayout ist, was Sie effektiv ersetzen, wenn Sie Ihre Transaktion ausführen. Was Sie ersetzen, muss Teil des Layouts sein. Sie können nicht einfach sagen, dass Sie das gesamte Layout ersetzen möchten, da es sich nicht um eine sichtbare ID handelt.

+0

Danke für deine Zeit, aber es ist nicht wirklich klar sorry ... ich bin nicht neu mit Aktivität, aber Fragment ist neu für mich ... Das MainLayout ist es das Layout des Fragments, das ich zu ersetzen versuche ... Ich muss das Hauptfragment durch das Detailfragment ersetzen ... Hast du irgendeine Probe? Danke Cheesebaron – tapastoutvu

+0

Sehen Sie meine bearbeitete Antwort – Cheesebaron

+0

Hallo cheesbaron, hm hm ich denke, wir sind nicht zu weit von der Lösung ... – tapastoutvu

Verwandte Themen