【发布时间】:2016-12-13 08:08:47
【问题描述】:
我有一个片段需要从活动中不断更新,我只想在单击按钮时显示此片段,单击同一个按钮时,片段应该被隐藏但仍然处于活动状态,因此我可以更新来自活动的片段的内容(片段包含一个回收器视图)。 在隐藏和显示此片段时,我想为交易制作动画。
**
工作代码
**
Activity XML(包含片段的框架布局)
<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();
}
在活动中 onCreate()--这样做是为了默认隐藏片段
fragmentManager = getSupportFragmentManager();
fragment = fragmentManager.findFragmentById(R.id.fragment_cart);
final FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.hide(fragment);
fragmentTransaction.commit();
【问题讨论】:
-
或许你可以试试对话片段
标签: android android-fragments android-recyclerview fragmenttransaction fragmentmanager