[英]How to return back to parent activity from child activity in ActivityGroup?
I've implemented a TabActivity Which has 4 Tabs, one of the tab is ParentActivity
when I go to this tab, there is a button which says Go To Child
when I click on this button I'm able to go to the child activity as follows: 我已经实现了一个TabActivity,它具有4个选项卡,当我转到该选项卡时,其中一个选项卡是ParentActivity
,当我单击该按钮时,有一个按钮显示“ Go To Child
,我可以转到子项活动如下:
/****************** ON BUTTON CLICK ******************/
Intent childView = new Intent(v.getContext(), ChildActivity.class);
replaceContentView("child_view", childView );
//ParentActivity.this.finish();
/****************************************************/
public void replaceContentView(String activityID, Intent activityIntent) {
View view = getLocalActivityManager().startActivity(activityID,activityIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)) .getDecorView();
this.setContentView(view);
}
Now I want to come back to ParentActivity
when I click on the Button which says Go To Parnt
in ChildActivity. 现在,当我单击ChildActivity中的“ Go To Parnt
”按钮时,我想回到ParentActivity
。 How do I do this, I tried so many examples but I didn't get it. 我如何做到这一点,我尝试了很多示例,但没有得到。 I want my tabs must be in all the activities. 我希望我的标签页必须在所有活动中。 I've included sample activity image. 我包括了示例活动图像。
Start Child Activity
like: 开始Child Activity
例如:
Intent edit = new Intent(getParent(), Contact.class);
TabGroupActivity parentActivity = (TabGroupActivity) getParent();
parentActivity.startChildActivity("Contact", edit);
And Implement back button click on Child Activity
like: 并执行后退按钮,单击Child Activity
例如:
back_btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
TabGroupActivity parentActivity = (TabGroupActivity) getParent();
parentActivity.onBackPressed();
}
});
And implement onBackPressed()
on your TabGroupActivity
like: 并在TabGroupActivity
上实现onBackPressed()
,例如:
@Override
public void onBackPressed() {
try{
Log.i("TabGroup", "Current on BackPressed called: ");
int length = mIdList.size();
Log.i("TabGroup", "Current ArrayList Size(): "+length);
if (length > 1) {
Activity current = getLocalActivityManager().getActivity(
mIdList.get(length - 1));
Log.i("TabGroup", "Current Last Activity"+current);
current.finish();
} else {
MakeExitDialog();
}
}catch(Exception e){
e.printStackTrace();
}
}
And also add startChildActivity(....)
in your TabGroupActivity
还可以添加startChildActivity(....)
在TabGroupActivity
public void startChildActivity(String Id, Intent intent) {
// LocalActivityManager manager = getLocalActivityManager();
int count = mIdList.size() - 1;
for (int i = count; i >= 0; i--) {
// System.out.println("Activity "+i+":::"+mIdList.get(i));
}
// System.out.println("Activity Started");
Window window = getLocalActivityManager().startActivity(Id,
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP));
if (window != null) {
mIdList.add(Id);
setContentView(window.getDecorView());
}
}
Update: make your main TabGroupActivity
like: 更新:使您的主要TabGroupActivity
像这样:
public class TabGroupActivity extends ActivityGroup {
private ArrayList<String> mIdList;
public static TabGroupActivity tabgrp;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (mIdList == null)
mIdList = new ArrayList<String>();
int length = mIdList.size();
Log.i("TabGroupActivity", "ArrayList Size(): "+length);
}
@Override
public void finishFromChild(Activity child) {
LocalActivityManager manager = getLocalActivityManager();
int index = mIdList.size() - 1;
if (index < 1) {
finish();
return;
}
manager.destroyActivity(mIdList.get(index), true);
mIdList.remove(index);
index--;
String lastId = mIdList.get(index);
Intent lastIntent = manager.getActivity(lastId).getIntent();
Window newWindow = manager.startActivity(lastId, lastIntent);
setContentView(newWindow.getDecorView());
}
public void startChildActivity(String Id, Intent intent) {
// LocalActivityManager manager = getLocalActivityManager();
int count = mIdList.size() - 1;
for (int i = count; i >= 0; i--) {
// System.out.println("Activity "+i+":::"+mIdList.get(i));
}
// System.out.println("Activity Started");
Window window = getLocalActivityManager().startActivity(Id,
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP));
if (window != null) {
mIdList.add(Id);
setContentView(window.getDecorView());
}
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
return true;
}
return super.onKeyDown(keyCode, event);
}
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
onBackPressed();
return true;
}
return super.onKeyUp(keyCode, event);
}
@Override
public void onBackPressed() {
try{
Log.i("TabGroup", "Current on BackPressed called: ");
int length = mIdList.size();
Log.i("TabGroup", "Current ArrayList Size(): "+length);
if (length > 1) {
Activity current = getLocalActivityManager().getActivity(
mIdList.get(length - 1));
Log.i("TabGroup", "Current Last Activity"+current);
current.finish();
} else {
}
}catch(Exception e){
e.printStackTrace();
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.