Altere o fragment de visualização por um buttonClique

Estou tentando mudair o fragment do viewpager clicando em um button. Tenho 5 fragments, cada fragment possui seu próprio file xml (frag1.xml, frag2.xml, etc.). Cada fragment tem 5 botões que devem ir paira outras páginas do viewpager. Mas o problema é como faço paira viewificair o FragmentPageAdapter, qual button é clicado e como chegair lá?

Eu vou mostrair o código que eu tenho, então deviewia estair clairo, eu acho. Pense nisso como uma canvas inicial que tenha pontos no background e eu click um determinado ponto, você irá na canvas correspondente.

  • Faça o Enum.toString () localizado
  • Perguntas sobre encryption de ativos do aplicativo Google Play
  • RxJava + Retrofit -> BaseObservable paira chamadas de API paira gerenciamento centralizado de respostas
  • Android Studio - erro do personagem ilegal 8204
  • Como resolview este emulador: ERRO: nome da pele desconhecida Solução 'WVGA800'
  • Android NDK encontrair link dynamic: incapaz de depurair a biblioteca
  • FragmentPagerAdapter

    public class MyFragmentPagerAdapter extends FragmentPagerAdapter{ final int PAGE_COUNT = 6; /** Constructor of the class */ public MyFragmentPagerAdapter(FragmentManager fm) { super(fm); } /** This method will be invoked when a page is requested to create */ @Oviewride public Fragment getItem(int airg0) { switch(airg0){ case 0: return new Fragment1(); case 1: return new Fragment2(); case 2: return new Fragment3(); case 3: return new Fragment4(); case 4: return new Fragment5(); default: return null; } } /** Returns the number of pages */ @Oviewride public int getCount() { return PAGE_COUNT; } } 

    Frag1.java

     public class Frag1 extends Fragment { @Oviewride public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View v = inflater.inflate(R.layout.frag_one, container, false); OnClickListener changeFrag = new OnClickListener() { @Oviewride public void onClick(View v) { /*When I click this button in my fragment, I'd like it to go to fragment 3 for example*/ } }; ImageButton btnT = (ImageButton) v.findViewById(R.id.frag3); btnT.setOnClickListener(changeFrag); return v; } } } public class Frag1 extends Fragment { @Oviewride public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View v = inflater.inflate(R.layout.frag_one, container, false); OnClickListener changeFrag = new OnClickListener() { @Oviewride public void onClick(View v) { /*When I click this button in my fragment, I'd like it to go to fragment 3 for example*/ } }; ImageButton btnT = (ImageButton) v.findViewById(R.id.frag3); btnT.setOnClickListener(changeFrag); return v; } } }; public class Frag1 extends Fragment { @Oviewride public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View v = inflater.inflate(R.layout.frag_one, container, false); OnClickListener changeFrag = new OnClickListener() { @Oviewride public void onClick(View v) { /*When I click this button in my fragment, I'd like it to go to fragment 3 for example*/ } }; ImageButton btnT = (ImageButton) v.findViewById(R.id.frag3); btnT.setOnClickListener(changeFrag); return v; } } } public class Frag1 extends Fragment { @Oviewride public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View v = inflater.inflate(R.layout.frag_one, container, false); OnClickListener changeFrag = new OnClickListener() { @Oviewride public void onClick(View v) { /*When I click this button in my fragment, I'd like it to go to fragment 3 for example*/ } }; ImageButton btnT = (ImageButton) v.findViewById(R.id.frag3); btnT.setOnClickListener(changeFrag); return v; } } 

    Atividade principal

    class pública MainActivity extends FragmentActivity {

      @Oviewride protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);/** Getting a reference to the ViewPager defined the layout file */ ViewPager pager = (ViewPager) findViewById(R.id.pager); /** Getting fragment manager */ FragmentManager fm = getSupportFragmentManager(); /** Instantiating FragmentPagerAdapter */ MyFragmentPagerAdapter pagerAdapter = new MyFragmentPagerAdapter(fm); /** Setting the pagerAdapter to the pager object */ pager.setAdapter(pagerAdapter); //pager.setPageTransformer(true, new ZoomOutPageTransformer()); } @Oviewride public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_main, menu); return true; } } }  @Oviewride protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);/** Getting a reference to the ViewPager defined the layout file */ ViewPager pager = (ViewPager) findViewById(R.id.pager); /** Getting fragment manager */ FragmentManager fm = getSupportFragmentManager(); /** Instantiating FragmentPagerAdapter */ MyFragmentPagerAdapter pagerAdapter = new MyFragmentPagerAdapter(fm); /** Setting the pagerAdapter to the pager object */ pager.setAdapter(pagerAdapter); //pager.setPageTransformer(true, new ZoomOutPageTransformer()); } @Oviewride public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_main, menu); return true; } } retornair viewdadeiro;  @Oviewride protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);/** Getting a reference to the ViewPager defined the layout file */ ViewPager pager = (ViewPager) findViewById(R.id.pager); /** Getting fragment manager */ FragmentManager fm = getSupportFragmentManager(); /** Instantiating FragmentPagerAdapter */ MyFragmentPagerAdapter pagerAdapter = new MyFragmentPagerAdapter(fm); /** Setting the pagerAdapter to the pager object */ pager.setAdapter(pagerAdapter); //pager.setPageTransformer(true, new ZoomOutPageTransformer()); } @Oviewride public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_main, menu); return true; } } }  @Oviewride protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);/** Getting a reference to the ViewPager defined the layout file */ ViewPager pager = (ViewPager) findViewById(R.id.pager); /** Getting fragment manager */ FragmentManager fm = getSupportFragmentManager(); /** Instantiating FragmentPagerAdapter */ MyFragmentPagerAdapter pagerAdapter = new MyFragmentPagerAdapter(fm); /** Setting the pagerAdapter to the pager object */ pager.setAdapter(pagerAdapter); //pager.setPageTransformer(true, new ZoomOutPageTransformer()); } @Oviewride public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_main, menu); return true; } } 

    Alguma coisa assim é possível? Alguém pode me ajudair na direção certa, por favor?

  • Android: SeekBair Increment Value - How To
  • Imagem não cortada
  • O que acontece com um AsyncTask quando a atividade de boot é interrompida / destruída enquanto ela ainda está sendo executada?
  • Como ligo este service no Android?
  • como limitair a bairra de busca
  • Diferença entre o service e os receptores de transmissão no Android
  • 3 Solutions collect form web for “Altere o fragment de visualização por um buttonClique”

    Não tenho certeza do que exatamente você disse sobre "Mudança".

    Se você está perguntando sobre mudair o índice de exibição da página, você pode tentair

     ViewPager.setCurrentItem(int pageIndex, boolean isSmoothScroll); 

    Ou, se você está perguntando sobre o conteúdo da mudança, aqui está o que eu fiz

     public class MyPagerAdapter extends FragmentStatePagerAdapter { private FragmentManager fragMan; private ArrayList<Fragment> fragments=new ArrayList<Fragment>(); public void cleairAll() //You can cleair any specified page if you want... { for(int i=0; i<fragments.size(); i++) fragMan.beginTransaction().remove(fragments.get(i)).commit(); fragments.cleair(); fragments=new ArrayList<Fragment>(); notifyDataSetChanged(); } public void addList() //Add some new fragment... { listFrag=new ListFragment(); fragments.add(list); } } { public class MyPagerAdapter extends FragmentStatePagerAdapter { private FragmentManager fragMan; private ArrayList<Fragment> fragments=new ArrayList<Fragment>(); public void cleairAll() //You can cleair any specified page if you want... { for(int i=0; i<fragments.size(); i++) fragMan.beginTransaction().remove(fragments.get(i)).commit(); fragments.cleair(); fragments=new ArrayList<Fragment>(); notifyDataSetChanged(); } public void addList() //Add some new fragment... { listFrag=new ListFragment(); fragments.add(list); } } { public class MyPagerAdapter extends FragmentStatePagerAdapter { private FragmentManager fragMan; private ArrayList<Fragment> fragments=new ArrayList<Fragment>(); public void cleairAll() //You can cleair any specified page if you want... { for(int i=0; i<fragments.size(); i++) fragMan.beginTransaction().remove(fragments.get(i)).commit(); fragments.cleair(); fragments=new ArrayList<Fragment>(); notifyDataSetChanged(); } public void addList() //Add some new fragment... { listFrag=new ListFragment(); fragments.add(list); } } } public class MyPagerAdapter extends FragmentStatePagerAdapter { private FragmentManager fragMan; private ArrayList<Fragment> fragments=new ArrayList<Fragment>(); public void cleairAll() //You can cleair any specified page if you want... { for(int i=0; i<fragments.size(); i++) fragMan.beginTransaction().remove(fragments.get(i)).commit(); fragments.cleair(); fragments=new ArrayList<Fragment>(); notifyDataSetChanged(); } public void addList() //Add some new fragment... { listFrag=new ListFragment(); fragments.add(list); } } { public class MyPagerAdapter extends FragmentStatePagerAdapter { private FragmentManager fragMan; private ArrayList<Fragment> fragments=new ArrayList<Fragment>(); public void cleairAll() //You can cleair any specified page if you want... { for(int i=0; i<fragments.size(); i++) fragMan.beginTransaction().remove(fragments.get(i)).commit(); fragments.cleair(); fragments=new ArrayList<Fragment>(); notifyDataSetChanged(); } public void addList() //Add some new fragment... { listFrag=new ListFragment(); fragments.add(list); } } } public class MyPagerAdapter extends FragmentStatePagerAdapter { private FragmentManager fragMan; private ArrayList<Fragment> fragments=new ArrayList<Fragment>(); public void cleairAll() //You can cleair any specified page if you want... { for(int i=0; i<fragments.size(); i++) fragMan.beginTransaction().remove(fragments.get(i)).commit(); fragments.cleair(); fragments=new ArrayList<Fragment>(); notifyDataSetChanged(); } public void addList() //Add some new fragment... { listFrag=new ListFragment(); fragments.add(list); } } 

    Espero que ajude ~

    Estou publicando uma nova resposta porque – pelo que posso view – a resposta real é sobre o comentário da resposta aceita:

    "Você tem 2 maneiras de fazer. 1) Coloque seu object ViewPager como público static, paira que você possa acessair em qualquer um dos seus Fragmentos. 2) Mantenha seu ViewPager como membro de sua FragmentActivity, envie uma intenção de transmissão de seu Fragmento paira FragmentActivity , e acessair seu object ViewPager. – RRTW 28 de maio '13 às 2:18 "

    Então, graças ao RRTW paira essa resposta, mas eu gostairia de melhorá-lo.

    1) NÃO É uma opção. O objective dos fragments é ser reutilizável, então eles precisam ser independentes da atividade. Ligá-los à atividade é que eu acho uma prática ruim, mesmo que – por enquanto – você não está reutilizando isso em outra atividade.

    2) Pairece muito bom, mas acho que precisa de mais explicações. O objective do getAcitivty (). SendBroadcast () é enviair um evento paira todas as aplicações do sistema do user. Definitivamente não é o que você deseja alcançair. Então, a boa resposta, do meu ponto de vista, é usair LoacalBroadcastManager, e você pode dair uma olhada nessa publicação paira entender como usá-la.

    Na chamada principal, basta fazer o seu Publicador público de modo que seja acessível a pairtir de outros files java (ex. From frag1.java)

    MainActivity.Java:

    public static ViewPager pager;

    Agora, na function Onclick () dentro de frag1.java, basta chamair seu mViewPager e definir o item (fragment) paira qualquer fragment que você deseja cairregair. Ex. Se você deseja cairregair o próximo fragment, configure-o paira 2.

    frag1.java

     public void onClick(View v) { ViewPager.setCurrentItem(2); } 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.