Hallo!
Ich versuche mich gerade an Fragments und es stellen sich mir so einige Fragen. Eventuell kann mir ja jemand eine einfache Antwort auf diese geben
public class MainActivity extends MapActivity implements ActionBar.TabListener, LocationListener{
[...]
onCreate(){ [...] // Set up the action bar. final ActionBar actionBar = getActionBar(); actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); // For each of the sections in the app, add a tab to the action bar. actionBar.addTab(actionBar.newTab().setText(R.string.title_section1).setTabListener(this)); actionBar.addTab(actionBar.newTab().setText(R.string.title_section2).setTabListener(this)); actionBar.addTab(actionBar.newTab().setText(R.string.title_section3).setTabListener(this)); actionBar.setSelectedNavigationItem(1); config = getSharedPreferences(PREFS_NAME, 0); locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE); } [...]}
Meine App soll drei Tabs darstellen. Jeder Tab soll ein Fragment darstellen. Die ersten beiden Tabs sollen auf einen gemeinsamen LocationService zugreifen können. Der dritte Tab soll ein ConfigFragment werden, der global für die beiden anderen Fragments bzw. die MainActivity gilt.
Ich habe den LocationService jetzt in der MainActivity instanziiert, damit beide Fragments darauf zugreifen können. Jetzt stehe ich aber vor dem Problem das ich, je nachdem ob Tab1 oder Tab2 dargestellt werden, ich aus diesen Fragments auf Daten des LocationService zugreifen muss bzw. beim Anstoßen der onLocationChance() Methode in der MainActivity dies an das jeweilige Fragment gemeldet werden muss. Auch muss ich aus den drei Fragments auf globale Variablen zugreifen können.
Jetzt könnte ich in den Fragments natürlich direkt mit "(MainActivity)getActivity.globaleVariable = xyz" auf Daten in der Activity zugreifen, aber das erscheint mir etwas gefrickelt, oder? Wie macht man so etwas denn vernünftig?
Vor allem, wie kann ich in der MainActivity Daten (Variablen und Objekte) an ein bestimmtes Fragment senden?
Reicht da auch ein "fragment.variablenname = xyz"? Oder sollte ich Getter- und Setter-Methoden schreiben? Oder gar eine wie auch immer aussehende Interfaceklasse bauen? Damit habe ich aber noch nie gearbeitet...
Ich verwende die Android 4.x Bibliotheken ohne die Android Compatibility Library.
Gruß
Thorsten