gpt4 book ai didi

android fragment 在交易后不显示以前的位置

转载 作者:行者123 更新时间:2023-11-30 01:53:07 25 4
gpt4 key购买 nike

让我们考虑一下我有 2 个 fragment a 和 b

fragment a 包含 View 分页器、水平 GridView 和按钮图像等滚动。当我单击 Fragment a 中的项目时,它会转到 fragment b,当我单击 fragment b 中的后退按钮时,它会返回到 fragment a。一切正常。

我的问题是 fragment b 的后按,它从开始加载 fragment a。我想在交易开始的地方显示 fragment a(比如底部)的确切位置。

我在每个项目的适配器中执行所有 fragment 事务,代码如下。

Bundle arguments = new Bundle(); 
Fragment fragment = null;
MyClass cls= (MyClass ) obj.get(position);
arguments.putParcelable("single", offer);
// Start a new fragment
fragment = new DetailFragment();
fragment.setArguments(arguments);
FragmentTransaction transaction = activity .getSupportFragmentManager().beginTransaction();
transaction.setCustomAnimations(android.R.anim.slide_in_left, android.R.anim.slide_out_right);
transaction.replace(R.id.content_page_frame, fragment, OfferZoneDetailFragment.ARG_ITEM_ID);
transaction.addToBackStack(DetailFragment.ARG_ITEM_ID);
transaction.commit();

如何从其他 fragment 返回时加载 fragment 事务开始位置。

最佳答案

我明白你的问题。你可以使用

transaction.add(R.id.content_page_frame, fragment, OfferZoneDetailFragment.ARG_ITEM_ID); 

代替

transaction.replace(R.id.content_page_frame, fragment, OfferZoneDetailFragment.ARG_ITEM_ID); 

可能,如果它不能解决你的问题,那么使用下面的机制,它会解决你的问题:-

检查您的 fragment 是否已经在您的堆栈中,然后附加已经存在的 fragment 。

否则添加新的 Frament 实例。

像这段代码一样使用 sacenario :

android.support.v4.app.FragmentManager fm =   getSupportFragmentManager();
AndroidFragment androidFragment = (AndroidFragment) fm.findFragmentByTag("android");
AppleFragment appleFragment = (AppleFragment) fm.findFragmentByTag("apple");
android.support.v4.app.FragmentTransaction ft = fm.beginTransaction();

/** Detaches the androidfragment if exists */
if(androidFragment!=null)
ft.detach(androidFragment);

/** Detaches the applefragment if exists */
if(appleFragment!=null)
ft.detach(appleFragment);

/** If current tab is android */
if(tabId.equalsIgnoreCase("android")){

if(androidFragment==null){
/** Create AndroidFragment and adding to fragmenttransaction */
ft.add(R.id.realtabcontent,new AndroidFragment(), "android");
}else{
/** Bring to the front, if already exists in the fragmenttransaction */
ft.attach(androidFragment);
}

}else{ /** If current tab is apple */
if(appleFragment==null){
/** Create AppleFragment and adding to fragmenttransaction */
ft.add(R.id.realtabcontent,new AppleFragment(), "apple");
}else{
/** Bring to the front, if already exists in the fragmenttransaction */
ft.attach(appleFragment);
}
}
ft.commit();

编辑:

transaction.add 将在 backpress 上显示前一个 fragment ,不会经历 fragment 生命周期

有关引用,请参阅此 onTabChanged:http://wptrafficanalyzer.in/blog/creating-navigation-tabs-using-tabhost-and-fragments-in-android/

关于android fragment 在交易后不显示以前的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32709074/

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