2011-11-11 13 views
5

私は現在、メインのビューがTabActivityで、各タブが別々のアクティビティであるAndroidプロジェクトに入っています。 1つはMapActivityで、他の2つは通常のアクティビティです。TabHost内の他の活動に対する発動? (Android)

最初の注意として、別々のアクティビティにあまりにも多くのコードがあるため、TabHostでコンテンツビューを変更し、すべてのコードを同じにするクラス。とにかく、問題に戻る。

タブの1つにボタンが含まれています。このボタンを押すと、TabActivityがMapActivityに切り替わり、マップが特定の場所にアニメートされます。

http://joshclemm.com/blog/?p=86にあるチュートリアルには、TabHostにmapviewとlistviewが含まれている場合の操作方法が示されています。 ListView内の項目がクリックされると、TabHostはマップビューに切り替え、その場所(それらの座標)にアニメートします。これは、別のアクティビティのボタンが押されたときに行う必要がある操作です。

次のようにMainView.javaが作成され、次のよう

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); 

MissionView.javaは次のとおりです。

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]); 
} 

}

誰もが私はこれを達成できる方法を知っていますか?

実際に実際の場所に描画するための実装は実装されていませんが、質問はまだ残っていますが、1つのアクティビティでボタンを押してTabHost内のタブを切り替え、アクティビティ? TabHost

答えて

0

変更タブが容易setCurrentTab(int) http://developer.android.com/reference/android/widget/TabHost.html#setCurrentTab(int)

は、単に他のActivityで取り扱い/ブロードキャスト意図を送受信することによって達成することができる他の活動にイベントを送信して行うことができます。

また、静的な参照をすべてのタブアクティビティ(ugly ...)に保存し、メソッドを直接呼び出すこともできます。ボタン上の

0

置き、以下の行を使用すると、地図の活動

((MainView) getParent()).setTabMap(); 

に切り替えてMAINVIEWに次の関数

public void setTabMap() 
{ 
    //as Map activity is your first tab so pass 0 as index 
    getTabHost().setCurrentTab(0); 
} 
を作成したい場所をクリックしてください
関連する問題