0

我有一堂课,我在其中创建了三个选项卡 Tab。

代码如下

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

问题是,当我单击选项卡二或三时,总是执行代码 PestanaAsignadaOtros 类,这是与选项卡三关联的类。

当您按下选项卡 2 运行 PestanaAsignadas 类代码时,如果我单击选项卡 3 运行类代码 AsignadaOtros Pestana,这将是合乎逻辑的。

为什么总是运行 PestanaAsignadaOtros 代码?

4

2 回答 2

2

您需要为每个选项卡创建不同的意图,目前您正尝试将相同的意图用于三种不同的目的:

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 回答