gpt4 book ai didi

Android: fragment backStack

转载 作者:IT王子 更新时间:2023-10-29 00:05:30 27 4
gpt4 key购买 nike

我试图在调用方法时加载新 fragment 。此方法创建一个新 fragment 并“替换”另一个 fragment :

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);
}
}

这很好,直到我回去。最后一个 fragment ,当我回去时应该删除。在我要在 Activity 上实现方法之前

public void onBackPressed(){}

要删除最后一个 fragment ,我想知道我是否正确处理了 fragment 更改。看来我在这里遗漏了一些东西..

最佳答案

如果您真的想替换 fragment ,请使用 replace() 方法,而不是执行 remove() 和 add()。

    FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(..............);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();

不要忘记执行 addToBackStack(null),这样你之前的状态就会被添加到 backstack 中,这样你就可以使用返回按钮返回。

另见 https://developer.android.com/reference/android/app/FragmentTransaction.html#replace(int, android.app.Fragment, java.lang.String) .

另一个好的来源是http://developer.android.com/guide/components/fragments.html (搜索 replace() 函数)。

关于Android: fragment backStack,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14354885/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com