11

Oto mój kod:Swiping do następnego fragmentu z przycisku kliknij

FirstView.java

import android.content.Intent; 
import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.view.ViewGroup; 
import android.widget.Button; 
import android.widget.TextView; 

public class FirstView extends Fragment 
{ 
    private TextView firstText; 
    private Button btn; 

    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
    { 


     View view = inflater.inflate(R.layout.fragment_view1,container,false); 


     firstText = (TextView)view.findViewById(R.id.viewOneText); 
     btn = (Button)view.findViewById(R.id.viewOneBtn); 

     btn.setOnClickListener(new ButtonEvent()); 
     return view; 

    } 

    private class ButtonEvent implements OnClickListener 
    { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      new SecondView(); 

     } 

    } 
} 

SecondView.java

import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.view.ViewGroup; 
import android.widget.Button; 
import android.widget.TextView; 

public class SecondView extends Fragment 
{ 
    private TextView secondText; 
    private Button secondViewBtn; 

    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
    { 


     View view = inflater.inflate(R.layout.fragment_view2,container,false); 


     secondText = (TextView)view.findViewById(R.id.secondViewText); 
     secondViewBtn = (Button)view.findViewById(R.id.secondViewBtn); 

     secondViewBtn.setOnClickListener(new ButtonEvent()); 
     return view; 

    } 

    private class ButtonEvent implements OnClickListener 
    { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      secondText.setText("Second View Text changed"); 

     } 

    } 
} 

MainActivity.java

import android.os.Bundle; 
import android.app.Activity; 
import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentActivity; 
import android.support.v4.app.FragmentManager; 
import android.support.v4.app.FragmentPagerAdapter; 
import android.support.v4.view.PagerAdapter; 
import android.support.v4.view.ViewPager; 
import android.view.Menu; 

public class MainActivity extends FragmentActivity { 

    private ViewPager viewPager; 
    private MyAdapter pageAdapter; 
    private static final int ITEMS = 2; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     viewPager = (ViewPager)findViewById(R.id.pager); 
     pageAdapter = new MyAdapter(getSupportFragmentManager()); 
     viewPager.setAdapter(pageAdapter); 

    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 

    public static class MyAdapter extends FragmentPagerAdapter { 


     public MyAdapter(FragmentManager fragmentManager) { 
      super(fragmentManager); 
     } 

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

     @Override 
     public Fragment getItem(int position) { 
      if(position==0) 
      { 
       return new FirstView(); 
      } 
      else 
      { 
       return new SecondView(); 
      } 
     } 
    } 

} 

W tym kodzie, po kliknięciu na Button w FirstView, muszę przejść do SecondView. Próbowałem z Intents, ale domyślam się, że jest źle. Obecnie jest to funkcja Swipe z powodu ViewPager, potrzebuję tego, aby przejść do SecondView po kliknięciu przycisku, z tą samą funkcją machnięcia.

Odpowiedz

28

Wystarczy dodać nową metodę, która porusza fragmenty do swojej aktywności:

public void setCurrentItem (int item, boolean smoothScroll) { 
    viewPager.setCurrentItem(item, smoothScroll); 
} 

i nazywają to od słuchacza przycisku:

((MainActivity)getActivity()).setCurrentItem (1, true); 
+0

Dzięki za odpowiedź. Ta metoda przychodzi do "Activity" lub "Fragment"? Mam na myśli "MainActivity.java" lub "FirstView.java"? –

+0

'MainActivity.java' –

+0

Tak, świetnie. Dziękuję –

2

można określić w swojej działalności poniższe funkcje:

public void next_fragment(View view) { 
    viewPager.setCurrentItem(viewPager.getCurrentItem()+1); 
} 

public void previous_fragment(View view) { 
    viewPager.setCurrentItem(viewPager.getCurrentItem()-1); 
} 

następnie wywołaj je ze swojego układu jako:

android:onClick="next_fragment" for the "NEXT" button 

i

android:onClick="previous_fragment" for the "PREVIOUS" button 
Powiązane problemy