我创建了一个应用程序,其中我在第一个选项卡上创建了5个选项卡,有一个ListView当我点击任何ListItem时,我已经调用了另一个有意图的活动。现在我们有一个问题As&当我点击Listitem时,标签将消失,我如何在我的SubActivity上显示标签。
任何帮助都会被认可。
答案 0 :(得分:0)
这是Android中的正常行为,不太好。
我通常在从这个类扩展的Tab中创建第一个Activity
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()
直到找到根父母。