Um das spezifische Viewpager-Fragment zu aktualisieren. Ich denke, Sie müssen die Aktivität nicht neu erstellen oder das Fragment neu erstellen.
Versuchen Sie, das adapter.NotifyDataSetChanged()
zu verwenden, um das Fragment zu aktualisieren.
folgen Sie den setps das sepcific viewpager Fragment zu aktualisieren:
1. Erstellen Sie einen Handler
class MyHandler : Handler
{
public override void HandleMessage(Message msg)
{
if (msg.What == 1)
{
mainAdapter.NotifyDataSetChanged();
}
}
}
2. Nachrichtens, wenn Sie das 50-Fragment erreichen
class PageChangeListen : Java.Lang.Object, IOnPageChangeListener
{
public void OnPageScrolled(int position, float positionOffset, int positionOffsetPixels)
{
}
public void OnPageScrollStateChanged(int state)
{
}
public void OnPageSelected(int position)
{
if (position == 1)
{
Message msg = new Message();
msg.What = 1;
new MyHandler().SendMessage(msg);
}
}
}
3. Im Haupt-Thread werden Sie empfangen die Nachricht Ived und rufen NotifyDataSetChanged
4. das Update-Schnittstelle für das Fragment
public interface Updateable
{
void update();
}
public class MyFragment : Android.Support.V4.App.Fragment, Updateable
{
TextView questionBox;
public MyFragment() { }
public static MyFragment NewInstance(String question)
{
MyFragment fragment = new MyFragment();
return fragment;
}
public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
View view = inflater.Inflate(Resource.Layout.MyFragmentLayout, container, false);
questionBox = (TextView)view.FindViewById(Resource.Id.textView1);
return view;
}
public void update()
{
questionBox.Text = "Mike Update";
}
}
5. Fragment durch Aufruf der Benutzeroberfläche hinzufügen, aktualisiert GetItemPosition
.
public override int GetItemPosition(Object @object)
{
MyFragment f = (MyFragment)@object;
System.Console.WriteLine(f.Id + "" + f.Resources + "" + f.Tag);
if (f != null)
{
f.update();
}
return base.GetItemPosition(@object);
}
In meinem Beispiel habe ich die zweite Seite mit dem Text "Mike Update" aktualisieren. Sie können die Update-Bedingung und den Inhalt ändern.
Bildschirmfoto:
Die git source code is here
'public static MyFragment NewInstance (int playId)' hier ist die gleiche Funktion im Xamarin android Fragment. –
Mike, du hast Recht. Ich habe diese Methode benutzt, um ein neues Fragment zu initiieren. Aber ich suche nach einer Lösung, wenn ich bereits Fragmente im View-Pager habe, wie man es mit einem anderen Param abrufen kann, wenn der Benutzer das 50. Fragment erreicht. – guruitengineer
'fragmentTransaction.Replace (Android.Resource.Id.Content, details);' Aufruf Ersetzen und Commit-Funktion in Fragment-Transaktion mit der gleichen Ressource-ID. es wird das Fragment neu laden. –