我有一個使用三個選項卡實現的tabhost並正在運行。我想知道是否有任何返回時點擊相同的選項卡時,它會返回到其初始狀態(如重置)?單擊重置選項卡
我設法使用每個選項卡的「setOnClickListener」方法做到這一點,並開始獲得新的活動,但沒關係,因爲我注意到活動的通過。
謝謝
我有一個使用三個選項卡實現的tabhost並正在運行。我想知道是否有任何返回時點擊相同的選項卡時,它會返回到其初始狀態(如重置)?單擊重置選項卡
我設法使用每個選項卡的「setOnClickListener」方法做到這一點,並開始獲得新的活動,但沒關係,因爲我注意到活動的通過。
謝謝
我有一個醜陋的簡單方法和一個更復雜的方法。
// Re-clickable (active) tabs
getTabWidget().getChildAt(0).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (tabHost.getCurrentTab() == 0) {
// Try this :
tabHost.setCurrentTab(1); // Ugly easy way
tabHost.setCurrentTab(0);
// Or do this :
SomeActivityGroup.group.onResume(); // More complex way
} else {
tabHost.setCurrentTab(0);
}
}
}
現在我很少有時間,如果你喜歡我可以發佈ActivityGroup代碼以及以後。
**這則:
import java.util.ArrayList;
import android.app.ActivityGroup;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
public class SomeActivityGroup extends ActivityGroup {
View rootView;
// Keep this in a static variable to make it accessible for all the nested
// activities, lets them manipulate the view
public static SomeActivityGroup group;
// Need to keep track of the history if you want the back-button to work
// properly, don't use this if your activities requires a lot of memory.
private ArrayList<View> history;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
protected void onResume() {
super.onResume();
this.history = new ArrayList<View>();
group = this;
// Start the root activity within the group and get its view
View view = getLocalActivityManager().startActivity("SomeActivity", new Intent(this, SomeActivity.class).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)).getDecorView();
// Replace the view of this ActivityGroup
replaceView(view);
}
public void replaceView(View v) {
// Adds the old one to history
if (history.size() == 0) {
if (rootView != null) {
history.add(rootView);
rootView = null;
}
}
history.add(v);
// Changes this Groups View to the new View.
setContentView(v);
}
public void back() {
try {
if (history.size() > 0) {
history.remove(history.size() - 1);
setContentView(history.get(history.size() - 1));
} else {
finish();
}
} catch (Exception ex) {
}
}
@Override
public void onBackPressed() {
try {
SomeActivityGroup.group.back();
} catch (Exception ex) {
}
return;
}
}
只要記住,活動組在ICS已被棄用。
如果您開發一個新應用程序,那麼我強烈建議您使用Fragments和一些兼容性庫,最好是ActionBarSherlock,因爲現在已棄用TabHost和TabActivities的「舊」方法。
下載圖書館,看一看類:
ABSLibraryXX \樣本\ demos中的\ src \ COM \ actionbarsherlock \樣本\演示\程序\ FragmentTabs.java
我保證你會驚奇地發現,它是強大而簡單的。當你在碎片而不是活動之間切換時,碎片狀態會持續存在 - 它們的行爲與視圖相似,而不是活動。
可以üPLZ解釋?? – Sumant
目前尚不清楚您的問題以及您對我們的期望。請張貼代碼並簡要解釋您的問題。 – kosa
我點擊標籤,其內容將被重新啓動而不會創建新的活動 – Kiotto