标签: back-stack

使用addToBackStack()时片段表现得很奇怪

GitHub上提供了此问题的SSCCE .

对于未来的读者,原始示例位于同一项目的一个分支上,并且此差异中提供了修复.

这个SSCCE有一个ListView和一行按钮.按钮应该更改ListView中的数据,并且listView行(单击时)应该打开一个新片段并在保持同一活动的同时推进backstack.

如果执行以下操作,则会产生以下结果:

  1. 打开应用程序.
  2. 点击ListView.- FragmentTransaction.replace(...)addToBackStack(true)
  3. 点按任意按钮.- FragmentTransaction.replace(...)addToBackStack(false)
  4. 点按后退按钮.

结果:

重叠碎片

两个片段都可见,但我只想显示第一个加载的片段(ListTwoFragment在代码中).这是片段应该如何工作?如果是这样,我怎样才能获得理想的效果?

MainActivity.java:

public class MainActivity extends FragmentActivity implements ListTwoFragment.Callbacks,
    ListThreeFragment.Callbacks {
    public static final String KEY_ARGS = "args";

    private String curUri = "";
    private String curArgs = "";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        selectContent(false);
    }

    private void selectContent(boolean addToBackStack) {
        Fragment fragment;

        if (curUri.isEmpty()) {
            // Use default fragment
            fragment = new …
Run Code Online (Sandbox Code Playgroud)

android android-fragments back-stack

1
推荐指数
1
解决办法
2673
查看次数

片段addToBackStack关闭App

我找不到解决问题的方法.

我有几个片段(动态创建),但我的后退按钮根本不工作,按下它将关闭应用程序,无论片段是"活动".

@Override
public boolean onOptionsItemSelected(MenuItem item) {
// TODO Auto-generated method stub
switch (item.getItemId()) {

case R.id.itemAdd:
FragmentTransaction tx = getFragmentManager().beginTransaction();
    Fragment fragment = new NeuesProduktFrag();

    tx.setCustomAnimations(R.anim.slide_in_left, R.anim.slide_out_right,
             R.anim.slide_in_left, R.anim.slide_out_right);
     tx.replace(R.id.main, fragment);
     tx.addToBackStack(null);
     tx.commit();
    return true;
Run Code Online (Sandbox Code Playgroud)

一切正常,但进入"NeuesProduktFrag"碎片并按下后退按钮我的应用程序关闭.尝试使用不同的按钮等.不需要覆盖onBackPressed吗?addToBackStack应该诀窍呢?

android fragment back-stack

1
推荐指数
1
解决办法
3766
查看次数

如何显示隐藏片段?

我有一个Activity底部有四个按钮的选项卡。通过按下任何按钮,一个新的 Fragment 会显示在这些按钮上方的 FrameLayout 中,就像我们在 TabActivity 中所做的那样。在这里查看我的问题。现在我想我应该找到一种方法来隐藏和显示这些片段。请告诉我如何在不重新加载的情况下显示和隐藏片段。

显示隐藏片段的主要目的是保持其当前状态。在我的一个片段中,每当我在片段之间切换时,我都会有一个 AsyncTask,它会再次调用该 AsynTask。

android fragment back-stack

1
推荐指数
1
解决办法
2829
查看次数

新版Android OS(4.4及更高版本)中的'FLAG_ACTIVITY_REORDER_TO_FRONT'

最近,我遇到了重新启动已经在堆栈中的Activity的问题.标志FLAG_ACTIVITY_REORDER_TO_FRONT是管理此问题的最佳解决方案.但是在Android 4.4及更高版本中它不能很好地工作(有时候Activity视图会冻结或应用程序最小化,菜单不会膨胀以重新启动Activity或键盘不允许输入文本区域的东西)但是以前的版本此标志重新启动Activity,并从后栈中删除.请查看此链接以获取更多详细信息.

android android-activity back-stack

1
推荐指数
1
解决办法
1537
查看次数

MVVMCross Android Presenter 清除活动的后台堆栈

我正在使用 MvvmCross 构建的 Android 应用程序将逐步执行活动,然后“返回”主页。一旦应用程序返回主页,我不希望用户能够退回到之前的所有活动。

通读所有文档和博客文章等,我已经能够超越演示者并捕获清除活动后台堆栈的请求。

所有这些代码都工作正常,但我一直无法找到如何清除活动的后堆栈。我有什么想法可以实现这一目标吗?我的代码如下:

安装程序.cs

public class Setup : MvxAndroidSetup<Core.App>
{
    protected override IMvxApplication CreateApp()
    {
        return new Core.App();
    }

    protected override void FillTargetFactories(IMvxTargetBindingFactoryRegistry registry)
    {
        MvxAppCompatSetupHelper.FillTargetFactories(registry);
        base.FillTargetFactories(registry);
    }

    protected override void InitializeLastChance()
    {
       // Mvx.IoCProvider.ConstructAndRegisterSingleton<ICameraHelper, CameraHelper>();
        base.InitializeLastChance();
    }

    protected override IMvxAndroidViewPresenter CreateViewPresenter()
    {
        var presenter = new MyAppAndroidPresenter(AndroidViewAssemblies);
        Mvx.IoCProvider.RegisterSingleton<IMvxAndroidViewPresenter>(presenter);

        return presenter;
    }
}
Run Code Online (Sandbox Code Playgroud)

MyAppAndroidPresenter.cs

public class MyAppAndroidPresenter : MvxAndroidViewPresenter
{
    public MyAppAndroidPresenter(IEnumerable<Assembly> androidViewAssemblies) : base(androidViewAssemblies)
    {
    }

    public override async Task<bool> Show(MvxViewModelRequest request)
    {
        if (request.PresentationValues …
Run Code Online (Sandbox Code Playgroud)

xamarin.android back-stack mvvmcross

1
推荐指数
1
解决办法
884
查看次数

Android活动管理

我对活动管理有一个问题.假设我有4个活动,例如A1,A2,A3,A4.现在A1有一个按钮,启动活动A2.A2有2个按钮,可以从A3或A4开始,A3有2个按钮,可以启动A4和A1活动.A4有3个按钮用于sart活动A1,A2,A3我在这个活动中没有使用完成方法.那么现在用户点击任何按钮的任何活动,而不是检查活动,这是否已经在后台?如果是,则此活动不会生成已在后台的新实例和启动活动.否则它会创造新的坚持.

android android-activity back-stack

0
推荐指数
1
解决办法
1745
查看次数