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

Popular posts from this blog

sql server - Cannot query correctly (MSSQL - PHP - JSON) -

php - trouble displaying mysqli database results in correct order -

C++ Linked List -