Questions tagged «back-stack»

“后堆栈”是一个堆栈,其中安排了Android任务中的活动。Android任务是用户在执行特定工作时与之交互的活动的集合。通过此过程,活动按打开每个活动的顺序放置在堆栈上。稍后可以通过按“后退”按钮以相反的顺序访问活动。

13
清除整个历史记录堆栈并在Android上开始新的活动
是否可以在堆栈上启动活动,在此之前清除整个历史记录? 情况 我有一个活动堆栈,它进入A-> B-> C或B-> C(屏幕A选择了用户令牌,但是许多用户只有一个令牌)。 在屏幕C中,用户可能会执行使屏幕B无效的操作,因此应用程序希望将其带到屏幕A,而不管其是否已经在堆栈中。屏幕A应该是我的应用程序中堆栈上的唯一项。 笔记 还有许多其他类似的问题,但是我还没有找到任何能回答这个确切问题的东西。我尝试调用getParent().finish()-这总是导致空指针异常。FLAG_ACTIVITY_CLEAR_TOP仅当活动已经在堆栈中时才起作用。

11
以编程方式返回到后堆栈中的上一个片段
假设我有一个活动,其中包含以编程方式添加的片段: private void animateToFragment(Fragment newFragment, String tag) { FragmentTransaction ft = getFragmentManager().beginTransaction(); ft.replace(R.id.fragment_container, newFragment, tag); ft.addToBackStack(null); ft.commit(); } 返回到可见的先前片段的最佳方法是什么? 我发现在Android中单击按钮时具有触发器后退按钮功能,但我认为模拟后退键事件不是正确的解决方法(而且我也无法使其正常工作): dispatchKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_BACK)); 调用finish()只会关闭我不感兴趣的活动。 有更好的方法来解决这个问题吗?

13
如何防止回到上一个活动?
当我在手机上按了BACK按钮时,我要防止特定活动返回到先前的活动。 具体来说,我有登录和注册屏幕,HomeScreen当发生成功的登录/注册时,两者都启动一个新的活动。启动HomeScreen后,我想防止用户能够通过按BACK键返回登录或注册屏幕。 我尝试使用Intent.FLAG_ACTIVITY_NO_HISTORY,但是由于该应用程序集成了Facebook,因此当使用“使用Facebook登录”时,Facebook应该返回到初始登录屏幕,因此我应该保留这些活动的历史记录。 我想到了在按下按钮时覆盖BACK按钮的行为HomeScreen以直接完成应用程序, @Override public void onBackPressed() { finish(); } 但这也不起作用。

18
片段onResume()和onPause()在后台程序中未调用
我在一个活动中有多个片段。在一个按钮上,单击“我正在开始一个新片段”,将其添加到Backstack中。我自然希望可以调用onPause()当前Fragment和onResume()new Fragment 的方法。好吧,这没有发生。 LoginFragment.java public class LoginFragment extends Fragment{ @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { final View view = inflater.inflate(R.layout.login_fragment, container, false); final FragmentManager mFragmentmanager = getFragmentManager(); Button btnHome = (Button)view.findViewById(R.id.home_btn); btnHome.setOnClickListener(new View.OnClickListener() { public void onClick(View view){ HomeFragment fragment = new HomeFragment(); FragmentTransaction ft2 = …

13
添加到后台堆栈后如何保持片段状态?
我写了一个虚拟活动,可以在两个片段之间切换。当您从FragmentA转到FragmentB时,FragmentA被添加到后台堆栈中。但是,当我返回FragmentA(按回去)时,会创建一个全新的FragmentA,并且它所处的状态会丢失。我感觉自己对这个问题也很满意,但是我提供了完整的代码示例来帮助解决问题: public class FooActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); final FragmentTransaction transaction = getFragmentManager().beginTransaction(); transaction.replace(android.R.id.content, new FragmentA()); transaction.commit(); } public void nextFragment() { final FragmentTransaction transaction = getFragmentManager().beginTransaction(); transaction.replace(android.R.id.content, new FragmentB()); transaction.addToBackStack(null); transaction.commit(); } public static class FragmentA extends Fragment { @Override public View onCreateView(LayoutInflater …

6
如果存在,如何从BackStack恢复Fragment
我正在学习如何使用片段。我有三个实例Fragment在类的顶部被初始化。我将片段添加到这样的活动中: 声明和初始化: Fragment A = new AFragment(); Fragment B = new BFragment(); Fragment C = new CFragment(); 替换/添加: FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); ft.replace(R.id.content_frame, A); ft.addToBackStack(null); ft.commit(); 这些摘要运行正常。每个片段都附加到该活动,并毫无问题地保存到后台堆栈。 因此,当我启动A,,C然后启动时,B堆栈如下所示: | | |B| |C| |A| ___ 当我按下“后退”按钮时,它B被破坏并C恢复。 但是,当我A第二次启动fragment 时,它不是从back stack恢复,而是添加到back stack的顶部 | | |A| |C| |A| ___ 但是我想恢复A并销毁所有碎片(如果有的话)。实际上,我只是喜欢默认的反向堆栈行为。 我该如何完成? 预期:(A应该恢复,并且应该破坏顶部片段) | | …

9
Android Fragment back stack的问题
我对android片段Backstack的工作方式遇到了一个很大的问题,对于提供的任何帮助将不胜感激。 假设您有3个片段 [1] [2] [3] 我希望用户能够导航[1] > [2] > [3]但在返回的途中(按返回按​​钮)[3] > [1]。 就像我想象的那样,这可以通过addToBackStack(..)在创建将片段[2]带入XML定义的片段持有者的事务时不调用来实现。 现实情况似乎是,如果我不想[2]在用户按下“后退”按钮时再次出现[3],则我不能调用addToBackStack显示片段的事务[3]。这似乎完全违反直觉(也许来自iOS世界)。 无论如何,如果我这样做,当我离开[1] > [2]并按回去时,我会按[1]预期到达。 如果我走了[1] > [2] > [3]然后按回去,我跳回了[1](按预期)。现在,当我尝试[2]从再次跳到时,就会发生奇怪的行为[1]。首先在[3]显示之前简要显示[2]。如果此时我按回,[3]将显示,如果我再次按回,则该应用程序退出。 谁能帮我了解这里的事吗? 这是我的主要活动的布局xml文件: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <fragment android:id="@+id/headerFragment" android:layout_width="match_parent" android:layout_height="wrap_content" class="com.fragment_test.FragmentControls" > <!-- Preview: layout=@layout/details --> </fragment> <FrameLayout android:id="@+id/detailFragment" android:layout_width="match_parent" android:layout_height="fill_parent" /> 更新 …

11
当活动以不同的Intent启动时,如何防止活动的多个实例
使用Google Play商店应用(以前称为Android Market)上的“打开”按钮启动应用时,我遇到了一个错误。从Play商店启动它的方式似乎与Intent从手机的应用程序图标菜单中启动方式不同。这导致启动同一活动的多个副本,而这些副本彼此冲突。 例如,如果我的应用程序由“活动” ABC组成,则此问题可能会导致一堆ABCA。 我尝试android:launchMode="singleTask"在所有Activity上使用来解决此问题,但是每当我按下HOME按钮时,都会清除将Activity堆栈清除为root的不良副作用。 预期的行为是: ABC-> HOME->恢复应用程序时,我需要:ABC-> HOME-> ABC 有没有一种好的方法可以防止启动多个相同类型的活动,而无需在使用HOME按钮时重置为根活动?

17
Android:从后堆栈中删除所有先前的活动
当我单击“ 个人资料活动”中的“ 注销”按钮时,我想让用户进入“ 登录”页面,他需要在其中使用新的凭据。 因此,我使用此代码: Intent intent = new Intent(ProfileActivity.this, LoginActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); 在“ onButtonClick注销”按钮的中。 但是问题是,当我单击登录活动上的设备后退按钮时,它将带我到ProfileActivity。我期望当我在LoginActivity上按设备后退按钮时,应用程序应该关闭。 我究竟做错了什么? 我还android:launchMode="singleTop"为我的LoginActivity添加了清单 谢谢


16
获取Backstack中的最新片段
如何获得最新的片段实例添加到Backstack中(如果我不知道片段标签和ID)? FragmentManager fragManager = activity.getSupportFragmentManager(); FragmentTransaction fragTransacion = fragMgr.beginTransaction(); /****After add , replace fragments (some of the fragments are add to backstack , some are not)***/ //HERE, How can I get the latest added fragment from backstack ??

12
片段onResume从后堆栈
我正在使用兼容性包在Android 2.2上使用Fragments。使用片段并将片段之间的过渡添加到后台时,我想实现活动的onResume相同的行为,即,每当片段从弹出窗口中移到“前景”(用户可见)时,回栈,我想在片段中激活某种回调(例如,对共享UI资源执行某些更改)。 我看到片段框架中没有内置的回调。为了达到这个目的,有什么好的做法吗?

10
Android:打开活动而不保存到堆栈中
我有2个活动:Main和List。 从Main可以打开List;从列表中可以打开Main。 我想它,以便名单的每一个开放并没有得到保存到“历史”。因此,从Main上按回去将无法返回到列表。 可能吗?

4
如何从片段弹出片段
我有一个活动A,该活动称为片段Bf,该活动称为片段Cf。我希望在调用Cf时将Bf放在后台,以便用户可以导航回去。但是,如果在Cf中按下了特定的按钮,我希望将Bf从后堆栈中删除。这可能吗? 我看到有一个popBackStack()函数。但是,我对如何工作感到有些困惑。使用此功能安全吗?是否有可能将不同应用程序的活动插入Bf之后的Backstack中? 此外,是否有任何方法可以在后堆栈上更改片段的savedInstanceState? 我只是不知道如何使用模拟器在后堆栈上进行可靠的测试。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.