有人可以通过点击选项卡中的元素来告诉我如何更改标签吗?我已经尝试过使用全局数据。代码如下所示:
public class Tabs extends TabActivity {
int tabNumber = 0;
private TabHost tabHost;
int returnedTabNumber = 0;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Resources res = getResources(); // Resource object to get Drawables
tabHost = getTabHost(); // The activity TabHost
TabHost.TabSpec spec; // Resusable TabSpec for each tab
Intent intent; // Reusable Intent for each tab
// Create an Intent to launch an Activity for the tab (to be reused)
intent = new Intent().setClass(this, Tribocracy.class);
// Initialize a TabSpec for each tab and add it to the TabHost
spec = tabHost.newTabSpec("map").setIndicator("Map",
res.getDrawable(R.drawable.ic_tab_artists))
.setContent(intent);
tabHost.addTab(spec);
// Do the same for the other tabs
intent = new Intent().setClass(this, Areas.class);
spec = tabHost.newTabSpec("areas").setIndicator("Areas",
res.getDrawable(R.drawable.ic_tab_albums))
.setContent(intent);
tabHost.addTab(spec);
// Do the same for the other tabs
intent = new Intent().setClass(this, Settings.class);
spec = tabHost.newTabSpec("settings").setIndicator("Settings",
res.getDrawable(R.drawable.ic_tab_albums))
.setContent(intent);
tabHost.addTab(spec);
tabHost.setCurrentTab(tabNumber);
}
protected void onResume() {
super.onResume();
GlobalData globalData = ((GlobalData)getApplicationContext());
returnedTabNumber = globalData.getTabNumber();
tabHost.setCurrentTab(returnedTabNumber);
}
}
全局适配器如下所示:
public class GlobalData extends Application {
//----------------------------------------------------
private int Point1; //define the vars here
private int Point2; //define the vars here
private int Point3; //define the vars here
private int Point4; //define the vars here
private int Point5; //define the vars here
private int Point6; //define the vars here
private int tabNumber;
public int getTabNumber() //getter of the value
{
return tabNumber;
}
public int setTabNumber(int number) //setter of the value
{
tabNumber = number;
return tabNumber;
}
}
现在,当我尝试通过单击其中一个项目来更改ListActivity选项卡中的选项卡时,它不会执行任何操作并保留在ListActivity选项卡上。也许我不应该在这里使用onResume()。基本上我想在单击列表中的一个项目时转到第一个选项卡。请帮忙!
答案 0 :(得分:0)
执行此操作的一种方法是使用Intents。有许多方法可以使用Intents。这在某些情况下尤其有效,例如,活动正在显示来自内容提供商的某些内容。我将在下面描述一种可能的方法:
ACTION_VIEW
等特定内容类型的vnd.android.cursor.item/vnd.somecontent
匹配。focus_tab
,并在活动的onCreate
中设置标签后,将活动标签设置为此focus_tab
额外指定的标签。 onNewIntent
,在该方法中,查找相同的focus_tab
额外内容,并将有效内容设置为该额外内容指定的内容。focus_tab
个额外内容至。添加FLAG_ACTIVITY_SINGLE_TOP
Intent标志,这样就不会创建主机Activity的新实例。然后,在您刚刚创建的Intent上调用startActivity
。注意:我自己没试过,但理论上应该有效。