0

3 つのタブを作成するクラスがあります。

コードは次のとおりです。

public class Tab extends TabActivity{
    public void onCreate (Bundle savedinstanceState){
        super.onCreate(savedinstanceState);
        setContentView(R.layout.tab);

        Bundle bundle = getIntent().getExtras();
        String idReunion = bundle.getString("idReunion");
        String nombreProyecto = bundle.getString("nombre_proyecto");

        TabHost tabHost = getTabHost();
        TabHost.TabSpec spec;
        Intent intent;
        Resources res = getResources();

        intent = new Intent();

        intent.putExtra("idReunion", idReunion);
        intent.putExtra("nombre_proyecto",nombreProyecto);

        intent.setClass(this, PestanaSinAsignar.class);
        spec = tabHost.newTabSpec("Pestaña 1").setIndicator("Sin asignar").setContent(intent);
        tabHost.addTab(spec);

        intent.putExtra("idReunion", idReunion);
        intent.putExtra("nombre_proyecto",nombreProyecto);

        intent.setClass(this, PestanaAsignadas.class);
        spec = tabHost.newTabSpec("Pestaña 2").setIndicator("Asignadas").setContent(intent);
        tabHost.addTab(spec);

        intent.putExtra("idReunion", idReunion);
        intent.putExtra("nombre_proyecto",nombreProyecto);

        intent.setClass(this, PestanaAsignadaOtros.class);
        spec = tabHost.newTabSpec("Pestaña 3").setIndicator("AsignadasUsuarios").setContent(intent);
        tabHost.addTab(spec);
    }
}

問題は、タブ 2 または 3 をクリックすると、タブ 3 に関連付けられたクラスであるコード PestanaAsignadaOtros クラスが常に実行されることです。

タブ 2 を押すと PestanaAsignadas クラス コードが実行され、タブ 3 をクリックするとクラス コード AsignadaOtros Pestana が実行されるのは論理的です。

PestanaAsignadaOtros コードを常に実行するのはなぜですか?

4

2 に答える 2

2

タブごとに異なるインテントを作成する必要があります。現在、3 つの異なる目的で同じインテントを使用しようとしています。

TabHost tabHost = getTabHost();

// First Tab
TabSpec firstspec = tabHost.newTabSpec("List");
// setting Title for the Tab
listspec.setIndicator("List View");

Intent firstIntent = new Intent(this, AddressActivity.class);
firstIntent.putExtra("Position", position);
firstspec.setContent(firstIntent );

// Second Tab
TabSpec secondspec = tabHost.newTabSpec("Map");
secondspec.setIndicator("Map View");

Intent secondIntent = new Intent(this, MapActivity.class);
secondIntent.putExtra("Position", position);
secondspec.setContent(secondIntent );


TabSpec thirdspec = tabHost.newTabSpec("Third");
thirdspec.setIndicator("Third View");

Intent thirdIntent = new Intent(this, ThirdActivity.class);
thirdIntent.putExtra("Position", position);
thirdspec.setContent(thirdIntent );


// Adding all TabSpec to TabHost
tabHost.addTab(firstspec); // First tab
tabHost.addTab(secondspec); // Second tab
tabHost.addTab(thirdspec); // Third Tab
于 2013-01-21T17:28:36.307 に答える
1

3 つのタブすべてに同じインテントを使用します。setContent を呼び出した後にインテントに加えた変更は引き続き適用されます。代わりに、3 つのインテントを作成し、上記のようにプロパティを設定して、setContent で追加する必要があります。

于 2013-01-21T17:28:17.107 に答える