gpt4 book ai didi

android - Fragment 在点击时隐藏和显示

转载 作者:行者123 更新时间:2023-11-29 15:40:41 26 4
gpt4 key购买 nike

我有一个 fragment 需要从 Activity 中不断更新,我只想在点击一个按钮时显示这个 fragment ,点击同一个按钮 fragment 应该被隐藏但仍然处于 Activity 状态所以我可以更新来自 Activity 的 fragment 的内容( fragment 包含回收器 View )。在隐藏和显示此 fragment 时,我想为交易设置动画。

**

工作代码

**

Activity XML(包含 fragment 的框架布局)

<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent">

<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"/>

<fragment
android:name="octave.foodster.fragment_cart"
android:id="@+id/fragment_cart"
android:layout_width="match_parent"
android:layout_height="match_parent"/>

</FrameLayout>

Activity 中的java代码(我暂时去掉了动画)

        @Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
finish();
return true;
case R.id.cart:
Log.i("click", "menu");

showHideFragment(fragment);
break;
}
return super.onOptionsItemSelected(item);
}

public void showHideFragment(final Fragment fragment) {

final FragmentTransaction fragTransaction = getSupportFragmentManager().beginTransaction();
fragTransaction.setCustomAnimations(R.anim.fragment_slide_from_right, R.anim.animation_leave);

if (fragment.isHidden()) {
fragTransaction.show(fragment);
Log.d("hidden", "Show");
} else {
fragTransaction.hide(fragment);
Log.d("Shown", "Hide");
}

fragTransaction.commit();
}

并且在 Activity onCreate() 中——这样做是为了默认隐藏 fragment

fragmentManager = getSupportFragmentManager();
fragment = fragmentManager.findFragmentById(R.id.fragment_cart);
final FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.hide(fragment);
fragmentTransaction.commit();

最佳答案

onClick 函数中执行此函数以在单击按钮时显示 fragment 的隐藏:

// Call this function inside onClick of button

public void showHideFragment(final Fragment fragment){

FragmentTransaction fragTransaction = getFragmentManager().beginTransaction();
fragTransaction.setCustomAnimations(android.R.animator.fade_in,
android.R.animator.fade_out);

if (fragment.isHidden()) {
fragTransaction.show(fragment);
Log.d("hidden","Show");
} else {
fragTransaction.hide(fragment);
Log.d("Shown","Hide");
}

fragTransaction.commit();
}

关于android - Fragment 在点击时隐藏和显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41116266/

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