始终运行相同的选项卡Android

时间:2013-01-21 17:17:38

标签: java android

我有一个班级,我在其中创建了三个标签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类,这是与选项卡三相关联的类。

按下选项卡两次运行PestanaAsignadas类代码是合乎逻辑的,如果我单击选项卡,则运行类代码AsignadaOtros Pestana。

为什么总是运行PestanaAsignadaOtros代码?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

您对所有3个标签使用相同的意图。调用setContent后对intent的更改仍会发生。相反,您应该创建3个意图,像上面一样设置它们的属性,并使用setContent添加它们。