android - Change Text of TextView in a Viewpager -
i've started coding android little school project. that, i've got viewpager 7 fragments. these fragments include each textview. when tap on button, want these textviews change texts @ once.
for this, i've togglebutton changing of text. i've tried have public 'settext' method in fragment sets text of textview (the method called in mainactivity string). but error: non-static method settext(java.lang.string) cannot referenced static context.
so, question is: how change texts of 7 textviews @ once?
here code:
mainactivity:
package app.voet.kalenderversemitseneca; import android.content.intent; import android.content.res.resources; import android.support.v7.app.appcompatactivity; import android.os.bundle; import android.view.view; import android.support.v4.app.fragment; import android.support.v4.app.fragmentmanager; import android.support.v4.app.fragmentpageradapter; import android.support.v4.view.viewpager; import android.support.v7.widget.toolbar; import android.widget.togglebutton; import java.util.arraylist; import java.util.list; import app.voet.kalenderversemitseneca.fragments.fivefragment; import app.voet.kalenderversemitseneca.fragments.fourfragment; import app.voet.kalenderversemitseneca.fragments.sevenfragment; import app.voet.kalenderversemitseneca.fragments.sixfragment; import app.voet.kalenderversemitseneca.fragments.threefragment; import app.voet.kalenderversemitseneca.fragments.onefragment; import app.voet.kalenderversemitseneca.fragments.twofragment; public class mainactivity extends appcompatactivity { private viewpager viewpager; private toolbar toolbar; private togglebutton togglebutton; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); viewpager = (viewpager) findviewbyid(r.id.viewpager); setupviewpager(viewpager); toolbar = (toolbar) findviewbyid(r.id.toolbar); setsupportactionbar(toolbar); getsupportactionbar().setdisplayhomeasupenabled(false); togglebutton = (togglebutton) findviewbyid(r.id.togglebutton); } private void setupviewpager(viewpager viewpager) { viewpageradapter adapter = new viewpageradapter(getsupportfragmentmanager()); adapter.addfragment(new onefragment(), "one"); adapter.addfragment(new twofragment(), "two"); adapter.addfragment(new threefragment(), "three"); adapter.addfragment(new fourfragment(), "four"); adapter.addfragment(new fivefragment(), "five"); adapter.addfragment(new sixfragment(), "six"); adapter.addfragment(new sevenfragment(), "seven"); viewpager.setadapter(adapter); } public void showaboutprojectview(view view){ intent intent = new intent(this, aboutprojectactivity.class); startactivity(intent); } public void ontoggleclicked(view view) { // toggle on? boolean on = togglebutton.ischecked(); settext(on); } public void settext(boolean translationon){ if (translationon){ resources res = getresources(); string[] versone = res.getstringarray(r.array.verse_1); string[] verstwo = res.getstringarray(r.array.verse_2); } else { resources res = getresources(); string[] versone = res.getstringarray(r.array.verse_1); string[] verstwo = res.getstringarray(r.array.verse_2); onefragment.settext(versone[0]); //here error } } } class viewpageradapter extends fragmentpageradapter { private final list<fragment> mfragmentlist = new arraylist<>(); private final list<string> mfragmenttitlelist = new arraylist<>(); public viewpageradapter(fragmentmanager manager) { super(manager); } @override public fragment getitem(int position) { return mfragmentlist.get(position); } @override public int getcount() { return mfragmentlist.size(); } public void addfragment(fragment fragment, string title) { mfragmentlist.add(fragment); mfragmenttitlelist.add(title); } @override public charsequence getpagetitle(int position) { return mfragmenttitlelist.get(position); } } onefragment (other fragments same):
package app.voet.kalenderversemitseneca.fragments; import android.content.res.resources; import android.os.bundle; import android.support.v4.app.fragment; import android.view.layoutinflater; import android.view.view; import android.view.viewgroup; import android.widget.textview; import app.voet.kalenderversemitseneca.r; public class onefragment extends fragment{ private textview textview1; public onefragment() { // required empty public constructor } @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); } @override public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate) { // inflate layout fragment //return inflater.inflate(r.layout.fragment_one, container, false); view view = inflater.inflate(r.layout.fragment_one, null); textview1 = (textview)view.findviewbyid(r.id.tv1); return view; } public void settext(string text) { textview1.settext(text); } } fragment_one.xml:
<?xml version="1.0" encoding="utf-8"?> <relativelayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="app.voet.kalenderversemitseneca.fragments.onefragment"> <textview android:id="@+id/tv1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textsize="20dp" android:textstyle="bold" android:layout_centerinparent="true" android:layout_margintop="5dp" android:layout_marginleft="5dp" android:layout_marginright="5dp" android:layout_marginbottom="5dp" android:text="hello" /> </relativelayout> if find else improve, please tell me, because i'm still @ beginning , learning :)
thank you,
leon
add viewpageradapter:
public fragment getfragment(int i) { return mfragmentlist.get(i); } and replace settext() with:
public void settext(boolean translationon){ if (translationon){ resources res = getresources(); string[] versone = res.getstringarray(r.array.verse_1); string[] verstwo = res.getstringarray(r.array.verse_2); } else { resources res = getresources(); string[] versone = res.getstringarray(r.array.verse_1); string[] verstwo = res.getstringarray(r.array.verse_2); ((onefragment)adapter.getfragment(0)).settext(versone[0]); } } and replace setupviewpager :
viewpageradapter adapter; private void setupviewpager(viewpager viewpager) { adapter = new viewpageradapter(getsupportfragmentmanager()); adapter.addfragment(new onefragment(), "one"); adapter.addfragment(new twofragment(), "two"); adapter.addfragment(new threefragment(), "three"); adapter.addfragment(new fourfragment(), "four"); adapter.addfragment(new fivefragment(), "five"); adapter.addfragment(new sixfragment(), "six"); adapter.addfragment(new sevenfragment(), "seven"); viewpager.setadapter(adapter); }
Comments
Post a Comment