0
我做了一個應用程序,其中我在第一個選項卡上做了5個選項卡,有一個ListView當我點擊任何ListItem時,我打算用另一個活動調用另一個活動。現在我們遇到了一個問題,因爲我點擊Listitem時&這個選項卡會Dissapears如何顯示我的SubActivity上的Tabs。如何在SubActivity中顯示選項卡?
任何幫助將得到處理。
我做了一個應用程序,其中我在第一個選項卡上做了5個選項卡,有一個ListView當我點擊任何ListItem時,我打算用另一個活動調用另一個活動。現在我們遇到了一個問題,因爲我點擊Listitem時&這個選項卡會Dissapears如何顯示我的SubActivity上的Tabs。如何在SubActivity中顯示選項卡?
任何幫助將得到處理。
這是Android中的正常行爲,不是很好。
我通常會創建一個標籤從該類延伸的第一活動
public class TabActivityGroup extends ActivityGroup {
protected LocalActivityManager manager;
protected ArrayList<String> mIdList;
public TabActivityGroup() {
this(false);
}
public TabActivityGroup(boolean single) {
super(single);
}
public void onCreate(Bundle ins) {
super.onCreate(ins);
manager = getLocalActivityManager();
mIdList = new ArrayList<String>();
}
public void startChildActivity(String Id, Intent intent) {
Log.d(this.getClass().getName(), "startChildActivity " + Id + "/" + mIdList.size());
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
Window window = manager.startActivity(Id, intent);
if (window != null) {
mIdList.add(Id);
setContentView(window.getDecorView());
}
}
@Override
public void finishFromChild(Activity child) {
Log.d(this.getClass().getName(), "finishFromChild("+child.getClass().getName()+") mIdList.size " + mIdList.size());
int index = mIdList.size() - 1;
if (index < 1) {
finish();
}else{
Log.e(getClass().getName(), "destroy " + mIdList.get(index));
manager.destroyActivity(mIdList.get(index), true);
mIdList.remove(index);
index--;
String lastId = mIdList.get(index);
Activity previous = manager.getActivity(lastId);
setContentView(previous.getWindow().getDecorView());
}
}
/**
* Overrides the default implementation for KeyEvent.KEYCODE_BACK so that
* all systems call onBackPressed().
*/
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
goBack();
return true;
}
return super.onKeyUp(keyCode, event);
}
public void goBack() {
Log.d(this.getClass().getName(), "goBACK() : " + mIdList.size());
int length = mIdList.size();
if (length > 1) {
Activity current = manager.getActivity(mIdList.get(length - 1));
current.finish();
}else{
((MyApplication)getApplication()).systemExit(this);
//This just calls to System.exit
}
}
}
然後,您可以創建一個標籤這樣
public class TabOne extends TabActivityGroup {
@Override
public void onCreate(Bundle b) {
super.onCreate(b);
startChildActivity(OneActivity.class.getName(), new Intent(this, OneActivity.class));
}
事情要記住:
該標籤沒有任何內容,只是啓動真正的標籤活動
startChildActivity
方法。當 回到第一個活動並且應用程序需要關閉時,這會獲得很好的行爲。
要非常小心的Context
對你有
使用TabActivityGroup
背景下的子活動。您可以通過
調用getParent()
手動完成此操作,或者更好地定義一個循環調用 getParent()
直到找到根父級的方法。