Ich bin derzeit in einem Android-Projekt, bei dem unsere Hauptansicht eine TabActivity ist und jeder Tab eine separate Activity ist. Einer ist eine MapActivity und die anderen beiden sind normale Activities.
Zunächst einmal denke ich, dass wir jeden Tab als separate Aktivitäten haben müssen, da es zu viel Code in den separaten Aktivitäten gibt, um einfach den TabHost den Inhaltsansicht bei einem Tabwechsel wechseln zu lassen und den gesamten Code in derselben Klasse zu haben. Wie dem auch sei, zurück zum Problem.
Einer der Tabs enthält eine Schaltfläche, die beim Drücken die TabActivity zur MapActivity wechseln und die Karte zu einem bestimmten Ort animieren soll.
Das Tutorial auf http://joshclemm.com/blog/?p=86 zeigt, wie es gemacht wird, wenn der TabHost eine Karte und eine Listview enthält. Wenn auf ein Element in der ListView geklickt wird, wechselt der TabHost zur Karte und animiert zu diesem Ort (diesen Koordinaten). Genau das muss ich tun, wenn die Schaltfläche in der separaten Aktivität gedrückt wird.
Die MainView.java wird wie folgt erstellt:
public class MainView extends TabActivity implements OnTabChangeListener{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Resources res = getResources(); // Ressourcenobjekt zum Abrufen von Zeichnungen
TabHost tabHost = getTabHost(); // Der TabHost der Aktivität
TabHost.TabSpec spec; // Wiederverwendbare TabSpec für jeden Tab
Intent intent; // Wiederverwendbares Intent für jeden Tab
intent = new Intent().setClass(this, MapGUI.class);
spec = tabHost.newTabSpec("map").setIndicator("Karte",
res.getDrawable(R.drawable.ic_tab_menu_item))
.setContent(intent);
tabHost.addTab(spec);
intent = new Intent().setClass(this, MissionView.class);
spec = tabHost.newTabSpec("mission").setIndicator("Mission",
res.getDrawable(R.drawable.ic_tab_menu_item))
.setContent(intent);
tabHost.addTab(spec);
intent = new Intent().setClass(this, SIPView.class);
spec = tabHost.newTabSpec("call").setIndicator("Anruf",
res.getDrawable(R.drawable.ic_tab_menu_item))
.setContent(intent);
tabHost.addTab(spec);
Die MissionView.java sieht wie folgt aus:
public class MissionView extends Activity implements Observer{
MissionController mc;
private TextView missionheader, missiondescription, missionaddress,
missiontime, missioninjuries;
private Button changedesc, gotoadress;
private String[] mission;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.missiontablayout);
missionheader = (TextView)findViewById(R.id.missionheader2);
missiondescription = (TextView)findViewById(R.id.missiondescription2);
missionaddress = (TextView)findViewById(R.id.missionaddress2);
missiontime = (TextView)findViewById(R.id.missiontime2);
missioninjuries = (TextView)findViewById(R.id.missioninjuries2);
changedesc = (Button)findViewById(R.id.gotoaddress);
changedesc.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// ETWAS TUN HIER?
}
});
mc = new MissionController(MissionView.this);
}
public void update(Observable observable, Object data) {
if(data instanceof String[]){
mission = (String[]) data;
updateView(mission);
}
}
public void updateView(String[] missiontext){
missionheader.setText(missiontext[0]);
missiondescription.setText(missiontext[1]);
missionaddress.setText(missiontext[2]);
missiontime.setText(missiontext[3]);
missioninjuries.setText(missiontext[4]);
}
}
Weiß jemand, wie ich das erreichen könnte?
Beachten Sie, dass der oben bereitgestellte Code keine Implementierung zum tatsächlichen Zeichnen am tatsächlichen Ort hat, aber die Frage bleibt dennoch, wie ich erreichen kann, dass beim Drücken einer Schaltfläche in einer Aktivität der TabHost den Tab wechselt und eine Änderung in dieser Tab-Aktivität auslöst?