Attualmente sono in un progetto Android in cui la nostra vista principale è TabActivity e ogni scheda è un'attività separata. Uno è un MapActivity e gli altri due sono attività ordinarie.Azione di fuoco su altre attività all'interno di TabHost? (Android)
Innanzitutto, penso che dobbiamo avere ciascuna scheda come attività separate, poiché c'è troppo codice nelle attività separate per fare in modo che TabHost cambi la visualizzazione del contenuto in una modifica di tabulazione e abbia tutto il codice nello stesso classe. Comunque, torniamo al problema.
Una delle schede include un pulsante, che quando viene premuto deve impostare il parametro TabActivity su MapActivity e animare la mappa in una posizione specifica.
Il tutorial trovato su http://joshclemm.com/blog/?p=86 mostra come farlo se TabHost contiene una mappa e un elenco. Se si fa clic su un elemento in ListView, TabHost passa a mapview e si anima in quella posizione (quelle coordinate). Questo è esattamente ciò che devo fare quando viene premuto il pulsante nell'attività separata.
Il MainView.java viene creato come segue:
public class MainView extends TabActivity implements OnTabChangeListener{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Resources res = getResources(); // Resource object to get Drawables
TabHost tabHost = getTabHost(); // The activity TabHost
TabHost.TabSpec spec; // Resusable TabSpec for each tab
Intent intent; // Reusable Intent for each tab
intent = new Intent().setClass(this, MapGUI.class);
spec = tabHost.newTabSpec("map").setIndicator("Map",
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("Call",
res.getDrawable(R.drawable.ic_tab_menu_item))
.setContent(intent);
tabHost.addTab(spec);
Il MissionView.java è la seguente:
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) {
// DO SOMETHING HERE?
}
});
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]);
}
}
Qualcuno sa come potrei raggiungere questo obiettivo?
Si noti che il codice fornito sopra non ha alcuna implementazione per disegnare effettivamente nella posizione effettiva, ma la domanda rimane ancora, come faccio a premere un pulsante in una attività per cambiare scheda in TabHost e attivare una modifica in tale scheda attività?