Witam. Robię program z tymi zakładkami (tabami) do przełączania między fragmentami . Mam taki problem w androidzie, że ustawiam przyciskowi listenera, ale gdy go klikam, metoda onClick nigdy się nie wykonuje. Zazwyczaj, kiedy używałem w onCreate setContentView problem nie występował, ale teraz nie używam contentView.
onCreate głównej aktywności wygląda tak:
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
ViewGroup container = (ViewGroup) findViewById(R.id.container);
View mainView = getLayoutInflater().inflate(R.layout.frame, container,false);
final ActionBar actionBar = getActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
fragment1 = new Fragment1();
fragment1_1 = new Fragment1_1();
fragment1_2 = new Fragment1_2();
fragment1_3 = new Fragment1_3();
fragment2 = new Fragment2();
fragment3 = new Fragment3();
tab1 = actionBar.newTab();
tab1.setText("okno1");
tab1.setTabListener(new MyTabListener(this, fragment1));
tab2 = actionBar.newTab();
tab2.setText("okno2");
tab2.setTabListener(new MyTabListener(this, fragment2));
tab3 = actionBar.newTab();
tab3.setText("okno3");
tab3.setTabListener(new MyTabListener(this, fragment3));
actionBar.addTab(tab1);
actionBar.addTab(tab2);
actionBar.addTab(tab3);
Button welcomeButton =(Button) mainView.findViewById(R.id.button3);
welcomeButton.setOnClickListener(new ShowHideButtonListener(this, fragment1, 0));
}
layout R.layout.frame jest plikiem xml, w którym dodałem wszystkie pozostałe fragmenty.
tab listener wygląda tak:
private class MyTabListener implements TabListener
{
private Activity activity;
private Fragment fragment;
private Fragment mFragment;
private MyTabListener(Activity activity, Fragment fragment)
{
this.activity = activity;
this.fragment = fragment;
}
@Override
public void onTabReselected(Tab arg0, FragmentTransaction transaction)
{
transaction.replace(R.id.fragment1, fragment);
transaction.commit();
}
@Override
public void onTabSelected(Tab tab, FragmentTransaction transaction)
{
if(mFragment == null)
{
mFragment = Fragment.instantiate(activity, fragment.getClass().getName());
transaction.add(android.R.id.content, mFragment);
}
else
{
transaction.attach(mFragment);
}
}
@Override
public void onTabUnselected(Tab tab, FragmentTransaction transaction)
{
transaction.detach(mFragment);
if(fragment1_1 != null)
transaction.detach(fragment1_1);
if(fragment1_2 != null)
transaction.detach(fragment1_2);
if(fragment1_3 != null)
transaction.detach(fragment1_3);
}
}
natomiast onClickListener wygląda tak:
private class ShowHideButtonListener implements OnClickListener
{
private Activity activity;
FragmentTransaction transaction;
private int i;
private ShowHideButtonListener(Activity activity, Fragment fragment, int i)
{
this.activity = activity;
transaction = activity.getFragmentManager().beginTransaction();
this.i = i;
System.out.println("listener konstruktor");
}
@Override
public void onClick(View arg0)
{
System.out.println("onClick");
//...
}
Co ciekawe tekst "listener konstruktor" się wyświetla, natomiast "onClick" się nie wyświetla jak kliknę przycisk.
Proszę o pomoc.