0

A、B の 2 つのアクティビティがあります。1 つ目は TabActivity で、2 つ目はアクティビティです。A の内部には、他のアクティビティを呼び出すためのクリック可能なボタンがあります。

public class A extends TabActivity implements OnClickListener {

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        tabHost = getTabHost();
        tabHost.addTab(tabHost.newTabSpec("a").setContent(R.id.a).setIndicator("a"));

        b = new Intent(this,B.class);
    tabHost.addTab(tabHost.newTabSpec("b").setContent(b)
            .setIndicator(this.getString(R.string.b)));

        btn.setOnClickListener(this);
    }


    public void onClick(View arg0) {
        if (arg0 == btn) {
        startActivity(b);
        }
    }
}

B の内部には、A クラスのボタンがクリックされるたびにインターネットからデータを取得するスレッドがあります。

public class B extends Activity {
    public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.search_result);

       searchHandler = new Handler() {
           @Override
           public void handleMessage(Message msg) {
               draw(msg.obj.toString());
           }
    }

    Intent intent = getIntent();
    if(..)
        sendHttpRequest();
}

データは正しく返され、管理できますが、タブホストが消えます。どうすれば解決できますか?

4

2 に答える 2

1

タブを自動的に変更するAndroidの方法は次のとおりです。

tabHost.setCurrentTab(tab);

使用しない:

startActivity(intent);

すべてのアクティビティでこれを使用するには、TabHost を public および static に設定するのが最善の方法です。

于 2012-07-03T13:16:31.057 に答える
0

ボタンをクリックするたびに、タブアクティビティの子アクティビティではないアクティビティを呼び出します。そのため、タブホストは消えます。このようにタブアクティビティでアクティビティbを呼び出します

 tabHost.addTab(tabHost.newTabSpec("Tab")
                    .setIndicator("Tab")
                    .setContent(new Intent(this, b.class)
                   ));
于 2012-05-03T18:27:50.030 に答える