I have a viewpager with a fragments slide, I need to know which one is on the screen to return some results to the correct fields. How to know what is on the screen?
Here are codes:
//Activity
public class ActivityAtendimentoTab extends AppCompatActivity{
private ResultFragmentsCondutas resultFragmentsCondutas;
//método para que possa ser passado os valores falados para os fragments.
public interface ResultFragmentsCondutas {
void showCondutaResults(ArrayList<String> results);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_atendimento_tab);
......
vpPager = (ViewPager) findViewById(R.id.vpPager);
adapterViewPager = new MyPagerAdapter(getSupportFragmentManager());
vpPager.setAdapter(adapterViewPager);
vpPager.addOnPageChangeListener(viewPagerPageChangeListener);
..
}
}
Below, viewpager, which is a innerclass:
//ViewPager inner class ActivityAtendimentoTab
public static class MyPagerAdapter extends FragmentPagerAdapter {
private static int NUM_ITEMS = 2;
public MyPagerAdapter(FragmentManager fragmentManager) {
super(fragmentManager);
}
// Returns total number of pages
@Override
public int getCount() {
return NUM_ITEMS;
}
// Returns the fragment to display for that page
@Override
public Fragment getItem(int position) {
switch (position) {
case 0: // Fragment # 0 - This will show FirstFragment
return new FragmentAvaliacao();
case 1: // Fragment # 0 - This will show FirstFragment different title
return new FragmentReceita()
default:
return null;
}
}
// Returns the page title for the top indicator
@Override
public CharSequence getPageTitle(int position) {
return "Page " + position;
}
}
I need to know which of these are on the screen to return some results, from an interface. Follow the code:
@Override
public void onResults(Bundle results) {
//inicializando as variáveis de fragments
av = (FragmentAvaliacao) getSupportFragmentManager().findFragmentByTag(getString(R.string.tag_fragment_avaliacao));//NULL
//pegando a lista de comandos
ArrayList<String> matches = results
.getStringArrayList(SpeechRecognizer.RESULTS_RECOGNITION);
//Verifica qual fragment está chamando a interface
//e passa o valor da string para que seja implementada nos respectivos campos.
try {
if (vpPager.getCurrentItem() == 0) {//TRUE
resultFragmentsCondutas = av;
resultFragmentsCondutas.showCondutaResults(matches);
}
How do I initialize av
(example), is always null.