标签: back-stack

在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 ??
Run Code Online (Sandbox Code Playgroud)

android android-fragments back-stack

97
推荐指数
9
解决办法
11万
查看次数

片段onResume来自后栈

我正在使用兼容包来使用Android 2.2中的Fragments.当使用片段,并在它们之间添加转换到backstack时,我想实现一个活动的onResume的相同行为,即,在弹出一个片段到达"前景"(用户可见)之后backstack,我想在片段中激活某种回调(例如,对共享UI资源执行某些更改).

我看到片段框架中没有内置回调.为了达到这个目的,有没有好的做法?

compatibility android android-fragments android-3.0-honeycomb back-stack

93
推荐指数
3
解决办法
10万
查看次数

Android:打开活动而不保存到堆栈中

我有2个活动:Main和List.

从Main您可以打开List; 从列表中,您可以打开Main.

我想它,以便名单的每一个开放并没有得到保存到"历史".因此,从Main按回不能返回List.

可能吗?

android back-stack

88
推荐指数
6
解决办法
7万
查看次数

如何弹出碎片背斜

我有一个活动A,它调用片段Bf,它调用片段Cf. 我希望在调用Cf时将Bf放在backstack中,以便用户可以导航回它.但是,如果在Cf中按下特定按钮,我希望将Bf从后台堆叠中移除.这可能吗?

我看到有一个popBackStack()函数.但是,我对这将如何工作有点困惑.使用此功能是否安全?在Backstack上Bf之后是否有可能插入来自不同应用程序的活动?

另外,有没有办法改变backstack上片段的savedInstanceState?

我只是无法弄清楚如何使用模拟器在backstack上进行强大的测试.

android android-fragments back-stack

66
推荐指数
2
解决办法
7万
查看次数

导航回FragmentPagerAdapter - >片段为空

我有一个片段(我会称之为pagerFragment),它被添加到后台并且可见.它拥有viewPager一个FragmentPagerAdapter.在FragmentPagerAdapter持有(假设)两个片段:A和B.

首先添加片段效果很好.

片段A有一个按钮,一旦点击,就会在后台堆叠中添加一个片段(C).

问题是:如果我添加该片段(C),然后单击返回,pagerAdapter则为空,我看不到里面的任何片段.

如果我使用hack,并破坏pagerFragments中的子片段(A和B)onDestroyView(),这解决了问题,虽然我不想使用这个hack.

任何想法可能是什么问题?

android android-fragments android-viewpager fragmentpageradapter back-stack

56
推荐指数
2
解决办法
9610
查看次数

如何清除Android Stack的活动?

我在Android中有一个包含多个活动的应用程序,我希望用户能够通过按菜单按钮注销.我遇到的问题是

A)的Android不会让你终止应用程序和
B),即使我的用户发送给LoginActivity他们又可以随时按下背部和马上回以前的活动,他们是in.

我已经尝试使用以下两个标志启动Activity:

Intent intent  = new Intent(this, LoginActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);        
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

我也亲自尝试过每一个.

我也打过电话finish()startActivity(intent),我在另一个StackOverflow的问题读取.

stack android android-activity back-stack

53
推荐指数
5
解决办法
6万
查看次数

Android - 保存/恢复片段状态

我有一个活动,其中我经历了几个片段.在每个片段中,我都有几个视图(EditText, ListView, Map等).

如何保存当时显示的片段实例?我需要它在活动时工作onPause() --> onResume().当我从另一个片段(从backstack弹出)返回时,我需要它才能工作.

从主要的Activity我调用第一个片段,然后从片段我调用下一个片段.

我的活动代码:

public class Activity_Main extends FragmentActivity{

public static Fragment_1 fragment_1;
public static Fragment_2 fragment_2;
public static Fragment_3 fragment_3;
public static FragmentManager fragmentManager;

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

     fragment_1 = new Fragment_1();

     fragment_2 = new Fragment_2();

     fragment_3 = new Fragment_3();

     fragmentManager = getSupportFragmentManager();
     FragmentTransaction transaction_1 = fragmentManager.beginTransaction();
     transaction_1.replace(R.id.content_frame, fragment_1);
     transaction_1.commit();
}}
Run Code Online (Sandbox Code Playgroud)

然后这是我的一个片段的代码:

public class Fragment_1 extends Fragment {

      private EditText title;
      private Button go_next;


      @Override …
Run Code Online (Sandbox Code Playgroud)

android fragment onresume android-fragments back-stack

46
推荐指数
4
解决办法
11万
查看次数

如何获取android中的backstack片段条目列表?

我正在开发一个使用标签实现的应用程序FragmentActivity.因为整个应用程序都需要选项卡,所以片段被广泛用于使应用程序在所有版本的android上兼容.

因此,我在可视化方面遇到了一个问题,即背板上存在哪些碎片.我确信有一种方法可以检索backstack上存在的片段列表.谢谢.

tabs android android-fragments back-stack

43
推荐指数
1
解决办法
4万
查看次数

Android:片段backStack

我试图在调用方法时加载一个新片段.此方法创建一个新片段并"替换"另一个片段:

private void showTestFragment(Fragment oldFragment, boolean addBackStack, BaseAdapter adapter, int position) {
    Cursor cursor = (Cursor)adapter.getItem(position);
    if(cursor != null){

        int idx = cursor.getColumnIndexOrThrow(Episode._ID);
        long rowId = cursor.getLong(idx);

        FragmentManager fragmentManager = getFragmentManager();
        FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();

        if(oldFragment != null){
            Log.i(TAG, "Removing the old fragment");
            fragmentTransaction.remove(oldFragment);
        }

        TestFragment testFragment =  new TestFragment();
        testFragment.setId(rowId);

        fragmentTransaction.add(android.R.id.content, testFragment);

        if(addBackStack){
            Log.i(TAG, "Added to the backstack");
            fragmentTransaction.addToBackStack(TAG);
        }

        fragmentTransaction.commit();
        Fragment f = getFragmentManager()
                .findFragmentById(R.id.index);
        Log.i(TAG, "after commit, frag is "+ f);
    }
}
Run Code Online (Sandbox Code Playgroud)

这很好,直到我回去.当我回去时,应删除最后一个片段.在我要实现活动方法之前

public void onBackPressed(){} …
Run Code Online (Sandbox Code Playgroud)

android android-fragments back-stack

38
推荐指数
1
解决办法
10万
查看次数

从后台堆栈恢复片段时的savedInstanceState

我可以savedInstanceState()在删除片段时使用保存状态,然后在从后端堆栈弹出片段时恢复状态吗?当我从后台堆栈恢复片段时,savedInstanceState包始终为null.

现在,app流程是:创建片段 - >删除片段(添加到后台堆栈) - >从后台堆栈恢复的片段(savedInstanceState bundle为null).

这是相关代码:

public void onActivityCreated(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Bundle bundle = getArguments();
    Long playlistId = bundle.getLong(Constants.PLAYLIST_ID);
    int playlistItemId = bundle.getInt(Constants.PLAYLISTITEM_ID);

    if (savedInstanceState == null) {
       selectedVideoNumber = playlistItemId;
    } else {
       selectedVideoNumber = savedInstanceState.getInt("SELECTED_VIDEO");
    }
}

public void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        outState.putInt(Constants.SELECTED_VIDEO, selectedVideoNumber);
    }
Run Code Online (Sandbox Code Playgroud)

我认为问题是onSavedInstanceState()当被删除并被添加到后台堆栈时永远不会被调用.如果我不能使用onsavedInstanceState(),还有另一种方法来解决这个问题吗?

android bundle android-fragments back-stack

36
推荐指数
2
解决办法
6万
查看次数