eine kleine Frage hat sich jetzt noch ergeben.
Ich hab jetzt die Tabs auf jeweils ein neues Fragment verwiesen (in der MainActivity)
@Override
public Fragment getItem(int position) {
switch (position){
case 1:{
Fragment1 f1 = new Fragment1();
return f1;
break;
}
case 2:{
Fragment1 f1 = new Fragment1();
return f1;
break;
}
default:{
return null;
break;
}
}
}
Alles anzeigen
wenn ich jetzt aber einen Button in einem Fragment definieren, muss der onClick-Listener ja Standardmäßig in der Acitvity registriert werden.
Ich hab es jetzt so gelöst, damit ich die Buttons der Fragmente unabhängig von der Activity halten kann.
public class Fragment1 extends Fragment implements View.OnClickListener {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.test, container, false);
Button btn = (Button) rootView.findViewById(R.id.tdBtn);
btn.setOnClickListener(this);
return rootView;
}
@Override
public void onClick(View v) {
TextView vi = (TextView) getView().findViewById(R.id.textView);
vi.setText("hfeifj");
}
}
Alles anzeigen
leider kann ich so den buttons in der layout-ansicht keinen onClick listener mehr zuweisen, da dieser immer in der MainActivity sucht. Aber so funktioniert es.
Jetzt zur Frage. Kann man das so lassen oder schaufle ich mir hier mein eigenes Grab?
Edit: Mir war bis vorhin noch nicht bewusst, dass die Navigation Tabs swipe optimiert sind und nicht onClick geladen werden (sondern immer das nächste Tab auch noch)
Jetzt habe ich allerdings das Problem, das ich innerhalb einer Tab (bspw. Tab 3) das Fragment verändere (bspw. TextView ändern) switche ich jetzt zu 2 und wieder zurück ist die testview unverändert. Switche ich zu 1 und dann wieder 3 ist die textview wieder im ursprungszustand... soweit so gut und verstanden.
Aber wenn ich in jedem der 3 Fragmente Änderungen habe und diese bei Tabwechsel verwerfen möchte, frage ich mich gerade ob die navigation tabs überhaupt das richtige widget für diese Aktion sind?
Danke!