Ändern Sie das ViewPager-Fragment mit einem ButtonClick

8

Ich versuche, das Viewpager-Fragment zu ändern, indem ich auf eine Schaltfläche klicke. Ich habe 5 Fragmente, jedes Fragment hat seine eigene XML-Datei (frag1.xml, frag2.xml und so weiter). Jedes Fragment hat 5 Knöpfe, die auf andere Seiten des Viewpagers gehen sollten. Aber das Problem ist, wie ich den FragmentPageAdapter einchecke, welcher Button geklickt wird und wie man dorthin kommt?

Ich werde den Code zeigen, den ich habe, dann sollte es klar sein, denke ich. Stellen Sie sich das wie einen Homescreen vor, auf dem unten Punkte zu sehen sind. Wenn Sie auf einen bestimmten Punkt klicken, gelangen Sie zum entsprechenden Bildschirm.

FragmentPagerAdapter

%Vor%

Frag1.java

%Vor%

MainActivity

public class MainActivity erweitert FragmentActivity {

%Vor%

Ist so etwas möglich? Kann mir bitte jemand in die richtige Richtung helfen?

    
mXX 26.05.2013, 17:24
quelle

3 Antworten

22

Ich bin mir nicht sicher, was genau du über "Change" gesagt hast.

Wenn Sie nach dem Anzeigesymbol für die Seitenänderung fragen, können Sie

ausprobieren %Vor%

Oder, wenn Sie nach Änderungsinhalt fragen, hier ist, was ich getan habe

%Vor%

Hoffe es hilft ~

    
RRTW 27.05.2013, 09:24
quelle
6

Ich poste eine neue Antwort, weil - was ich sehen kann - die wirkliche Antwort auf dem Kommentar der akzeptierten Antwort steht:

"Sie haben 2 Möglichkeiten. 1) Setzen Sie Ihr ViewPager-Objekt als statisch öffentlich, so dass Sie auf jedes Fragment zugreifen können. 2) Lassen Sie Ihren ViewPager als Mitglied Ihrer FragmentActivity erhalten und senden Sie eine Broadcast-Absicht von Ihrem Fragment to FragmentActivity und Zugriff auf Ihr ViewPager-Objekt. - RRTW 28. Mai 13 um 02:18 "

Also danke an RRTW für diese Antwort, aber ich möchte es verbessern.

1) ist KEINE Option. Der Zweck von Fragmenten soll wiederverwendbar sein, so dass sie unabhängig von der Aktivität sein müssen. Wenn ich sie mit Aktivitäten in Verbindung bringe, denke ich, dass es eine schlechte Übung ist, auch wenn du sie vorerst nicht für andere Aktivitäten wieder verwendest.

2) Klingt sehr gut, aber ich denke, es braucht mehr Erklärung. Der Zweck von getAcitivty (). SendBroadcast () besteht darin, ein Ereignis an alle Anwendungen des Benutzersystems zu senden. Es ist definitiv nicht das, was du erreichen willst. Die gute Antwort aus meiner Sicht ist, LoacalBroadcastManager zu verwenden, und Sie können dort nachsehen posten um zu verstehen, wie man es benutzt.

    
Sébastien BATEZAT 13.06.2015 10:44
quelle
0

Im main rufen Sie einfach Ihren Viewpager auf, damit er von anderen Java-Dateien (zB von frag1.java) aus zugänglich ist

MainActivity.Java:

public static ViewPager pager;

Nun rufen Sie in der Funktion onclick () in frag1.java einfach Ihr mViewPager auf und setzen das Element (Fragment) auf das Fragment, das Sie laden möchten. Ex. Wenn Sie das nächste Fragment laden möchten, setzen Sie es auf 2.

frag1.java

%Vor%     
fynn 12.07.2017 20:41
quelle