密码管理请下载:
http://a.app.qq.com/o/simple.jsp?pkgname=com.wa505.kf.epassword
package com.dczs.activity; import java.util.Stack; import android.app.Activity; import android.app.ActivityGroup; import android.util.Log; import android.view.KeyEvent; public class BackStackActivityGroup extends ActivityGroup { private static final String TAG = "BackStackActivityGroup"; private AcitivityStack mActivityStack = new AcitivityStack(); public interface IActivityStack { void add(ActivityStatus name); void remove(String name); void pop(); } public void onStackChange(AcitivityStack stack) { } public class AcitivityStack implements IActivityStack { public Stack<ActivityStatus> mStack = new Stack<ActivityStatus>(); @Override public void add(ActivityStatus activityStackItem) { mStack.add(activityStackItem); onStackChange(this); } @Override public void remove(String name) { ActivityStatus theItem = null; for (ActivityStatus item : mStack) { if (item.name == name) { theItem = item; break; } } if (theItem != null) { mStack.remove(theItem); if (mStack.size() > 0) { mStack.peek().run(); } else { getApplication().onTerminate(); } } onStackChange(this); } @Override public void pop() { mStack.pop(); if (mStack.size() > 0) { mStack.peek().run(); } else { getApplication().onTerminate(); } onStackChange(this); } public int size() { return mStack.size(); } public String peek() { if (mStack.size() > 0 && mStack.peek() != null) { return mStack.peek().name; } else { return null; } } } public class ActivityStatus { private IActivityStack mActivityStack; private String name = ""; private boolean mAddToStack = false; private Runnable runnable; private Activity activity; private ActivityStatus(IActivityStack activityStack) { mActivityStack = activityStack; } public void setRunnable(Runnable runnable) { this.runnable = runnable; } public void setName(String name) { this.name = name; } public ActivityStatus() { } public void addToBackStack() { mAddToStack = true; } public void run() { runnable.run(); activity = getLocalActivityManager().getActivity(name); } public void commit() { if (mAddToStack) { mActivityStack.add(this); } runnable.run(); activity = getLocalActivityManager().getActivity(name); } }; public ActivityStatus startTransaction() { return new ActivityStatus(mActivityStack); } public AcitivityStack getActivityStack() { return mActivityStack; } /** * Back event should not directly dispatch to the child views. Because when * back key event dispatch to this activity's child views, if any of a child * activity's sub views is taking focus. the child activity's * {@link DecorView} will receive the event, and dispatch back key event to * the child activity and call the child activity's onBackPressed method, * this activity's onBackPressed will not be called. This activity's * onBackPressed event will depend on the child activity's views' focus * change. * * @see {@link #onGlobalFocusChanged}. */ @Override public boolean dispatchKeyEvent(KeyEvent event) { Log.d(TAG, "dispatchKeyEvent... new "); if (event.getKeyCode() != KeyEvent.KEYCODE_BACK) { super.dispatchKeyEvent(event); } else { if (event.getAction() == KeyEvent.ACTION_UP) { onBackPressed(); } } return true; } @Override public void onBackPressed() { Log.d(TAG, "onBackPressed... new "); Activity activity = getLocalActivityManager().getActivity( mActivityStack.peek()); activity.onBackPressed(); } @Override public void finishFromChild(Activity child) { // TODO Auto-generated method stub Log.d(TAG, "finishFromChild... new "); for (ActivityStatus item : mActivityStack.mStack) { Activity activity = getLocalActivityManager() .getActivity(item.name); if (activity == child) { // handled the finish command. Log.d(TAG, "finishFromChild... is Finishing is true"); AcitivityStack stack = getActivityStack(); stack.remove(item.name); } } } }
相关推荐
这样,在TabHost中,我们可以创建一个包含多个子Activity的ActivityGroup,而不是创建多个独立的Activity,从而简化了回退栈的管理和内存管理。 具体实现ActivityGroup的方法包括: 1. **定义ActivityGroup**:...
然而,有时开发者可能需要在同一个栈中管理多个Activity,这时`ActivityGroup`就派上了用场。`ActivityGroup`是早期Android版本(Android 2.x)提供的一种特殊类型的`ViewGroup`,允许在同一个`TabHost`或`...
`ActivityGroup`是`Sherlock`库中的一个类,它扩展了`Activity`,并提供了管理子`Activity`的能力。通过`LocalActivityManager`,我们可以启动、切换和管理子`Activity`,同时保持它们的状态。 在实现过程中,我们...
在Android开发中,ActivityGroup是早些版本API中提供的一种特殊类型的Activity,它允许开发者在一个TabHost或者帧布局(FrameLayout)中嵌套多个Activity,从而实现类似iOS中UINavigationController的堆叠管理器效果...
这个过程通常需要重写`startChildActivity()`方法,以便在ActivityGroup内部管理子Activity的生命周期。例如: ```java public void startChildActivity(String tag, Intent intent) { Window window = ...
在Android开发中,ActivityGroup是一种特殊类型的Activity,它允许开发者在一个Activity内嵌套其他Activity,实现类似TabHost或Fragment的效果,但这是在Android早期版本(API级别较低)中的一种实现方式。...
2. 创建ActivityGroup:定义一个继承自ActivityGroup的类,用于管理子Activity。你需要重写onCreateView方法来返回子Activity的视图,以及onSaveInstanceState和onRestoreInstanceState来保存和恢复子Activity的状态...
为了实现这个功能,我们可以使用 ActivityGroup 来管理不同的 Activity。 首先,让我们来了解一下 ActivityGroup 的概念。ActivityGroup 是 Android 中的一种特殊的 Activity,它可以容纳多个 Activity,并且可以在...
1. **LocalActivityManager**:这是ActivityGroup的核心组件,用于管理子Activity的创建、销毁以及保存和恢复状态。通过LocalActivityManager,我们可以方便地在ActivityGroup内启动新的子Activity,并在需要时切换...
这通常通过自定义的启动方法实现,如`startChildActivity()`,在该方法中,你需要管理Activity的生命周期,并将新Activity的视图添加到ActivityGroup的布局中。 Activity外跳转则是指从ActivityGroup中的子Activity...
`ActivityGroup`在早期的Android版本中被用来解决在同一个栈内管理多个`Activity`的需求,但在Android 3.0(API Level 11)之后,官方推荐使用`Fragment`来替代,因为`Fragment`提供了更灵活且性能更好的解决方案。...
接着,ActivityGroup是一个特殊的Activity,它可以包含并管理多个子Activity。在ActivityGroup内部,我们可以使用LocalActivityManager来管理子Activity的生命周期。通过startActivity和addWindow方法,可以在...
在早期的Android版本中,ActivityGroup用于在一个Tab内管理多个Activity的堆栈。它的主要作用是在不离开TabHost的情况下,实现内部Activity的切换和堆栈管理。然而,从Android 3.0(API级别11)开始,ActivityGroup...
ActivityGroup是android.app.LocalActivityManager的包装器,它允许你管理一组内部的Activity。在早期版本的Android中,开发者可能会用ActivityGroup来实现类似TabHost的功能,或者创建复杂的视图层次结构。下面我们...
4. 子Activity的生命周期管理:由于ActivityGroup内嵌了Activity,所以必须手动处理子Activity的生命周期。例如,当用户在选项卡之间切换时,需要调用finish()方法结束当前子Activity,并启动新的子Activity。 5. ...
4. 创建ActivityGroup:为每个Tab创建一个ActivityGroup,通常在onCreate()方法中,会设置一个LocalActivityManager来管理子Activity。 5. 添加子Activity:在ActivityGroup中,通过LocalActivityManager的start...
ActivityGroup是另一种用于管理多个Activity的容器类,它允许你在同一个父Activity中启动和管理子Activity。这在某些情况下非常有用,例如在一个应用中创建类似TabHost的多页面导航,但又希望避免每次切换标签时都...
5. **生命周期管理**:ActivityGroup内的子Activity生命周期需要特别注意,因为它们的创建和销毁由LocalActivityManager控制,开发者需要确保正确处理每个子Activity的生命周期回调。 6. **异常处理和回退栈管理**...
ActivityGroup是Android早期版本(API Level 13之前)提供的一种方式,用来在TabHost或者StackView等组件中嵌套管理Activity。它允许你在同一个窗口内启动和切换多个子Activity,使得这些子Activity看起来像是在一...
ActivityGroup则是Android早期版本中用于在同一个Activity内管理多个子Activity的一种方式。它通过LocalActivityManager来实现子Activity的生命周期管理和界面切换。ActivityGroup的主要优势在于可以减少界面间的...