Taimoor Ali
Taimoor Ali

Reputation: 129

Get view for button click on the Fragment of the ViewPager

I have successfully set up the a FragmentActivity with FragementPagerAdapter associated with ViewPager to implement two tabbed application .

One of the Tabs namely "Wave" has a text view and a button . All I want is call textview.setText method via the onClick method of button described by its xml attribute .

I do not know where should I initialize my TextView or Button , how can I get the context of Wave tab and where should I write onclick method-

public class InformationShow extends FragmentActivity {

XMLdata dataObject;

ViewPager viewPager;
    PagerAdapter adpt;


    Fragment temp;  
    TextView tv;
    Button bt;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.fragment_main);
        viewPager=(ViewPager)findViewById(R.id.pager);
            adpt  =  new  PagerAdapter(getSupportFragmentManager());
        viewPager.setAdapter(adpt);
      // temp=adpt.fg.findFragmentById((int)adpt.getItemId(1));

   tv=(TextView)findViewById(R.id.graphWaveTextView);
   bt = (Button)findViewById(R.id.button1);

     }


 public void changeText(View v){

  tv.setText("It worked ");
 }

Adapter Class

public class PagerAdapter extends FragmentPagerAdapter {
int count = 2;
CharSequence namme[] = {"Temperature","Wave"}; 
XMLdata data;
FragmentManager fg;
public  PagerAdapter(FragmentManager fragmentManager ){
    super(fragmentManager);
    this.fg = fragmentManager;
}
Context context;

@Override
public Fragment getItem(int arg0) {

    switch (arg0){

    case 0:{    

        TemperatureGraphFrag temp = new TemperatureGraphFrag();

        return temp;

    } 


    case 1:{WaveHeightGraphFrag wave = new WaveHeightGraphFrag();

    return wave;
    } 




    }

    return null;
}






@Override
public int getCount() {
    return 2;
}



@Override
public CharSequence getPageTitle(int position) {
return namme[position];
}




    }

Fragments Class

public class TemperatureGraphFrag extends Fragment {


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
    View    view = inflater.inflate(R.layout.graph_t, container, false);
        return view;
    }



}


public class WaveHeightGraphFrag extends Fragment  {


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
    View    view = inflater.inflate(R.layout.graph_sig_wave_height, container, false);


    return view;


    }




}

fragment_main XML implemented by FragmentActicity

<android.support.v4.view.ViewPager xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/pager"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <android.support.v4.view.PagerTabStrip
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="top"
        android:paddingBottom="10dp"
        android:paddingTop="10dp"
        android:textColor="#65C2C9"
        android:scrollbarSize="5dp"/>


</android.support.v4.view.ViewPager>

Tab 2 Fragment XML graph_sig_wave_height

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"


     >

    <TextView
        android:id="@+id/graphWaveTextView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Small Text"
        android:textAppearance="?android:attr/textAppearanceSmall"
        android:layout_gravity="center"


         />

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button"

        android:layout_gravity="center" 
        android:onClick="changeText"/>

</LinearLayout>

Tab 1 fragment layout XML graph_t

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:id="@+id/linearTemp"
     >

    <TextView
        android:id="@+id/graphTextView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Medium Text"
        android:textAppearance="?android:attr/textAppearanceMedium" 
        android:layout_gravity="center"
        />

</LinearLayout>

Upvotes: 0

Views: 563

Answers (1)

Yash Sampat
Yash Sampat

Reputation: 30611

Add the following method to your WaveHeightGraphFrag class:

@Override
public void onViewCreated(View view, Bundle savedInstanceState){

    final TextView t = (TextView) view.findViewById(R.id.graphWaveTextView);

    Button b = (Button) view.findViewById(R.id.button1);
    b.setOnClickListener(new OnClickListener(){
        @Override
        public void onClick(View v){
            t.setText("It worked ");
        }
   });
}

This is what you want.

Upvotes: 1

Related Questions