Java 如何在片段中实现向后箭头
我有一个导航抽屉,在它的第一个片段中,我有一个新闻页面,用户点击一个按钮可以看到整个新闻,这时它进入另一个片段 我想知道如何实现一个箭头以返回到上一个片段,而不是打开导航抽屉的图标 我以前从未用过这个,我不知道 这是我在MainActivity中的工具栏Java 如何在片段中实现向后箭头,java,android,Java,Android,我有一个导航抽屉,在它的第一个片段中,我有一个新闻页面,用户点击一个按钮可以看到整个新闻,这时它进入另一个片段 我想知道如何实现一个箭头以返回到上一个片段,而不是打开导航抽屉的图标 我以前从未用过这个,我不知道 这是我在MainActivity中的工具栏 appBarLayout = (AppBarLayout) findViewById(R.id.appBarLayout); toolbar = (Toolbar) findViewById(R.id.toolbar); //toolbar
appBarLayout = (AppBarLayout) findViewById(R.id.appBarLayout);
toolbar = (Toolbar) findViewById(R.id.toolbar);
//toolbar title
toolbar.setTitle(null);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayShowTitleEnabled(false);
// Toolbar logo
logoToolbar = (ImageView) findViewById(R.id.logoToolbar);
logoToolbar.setImageResource(R.drawable.newstoolbar);
当用户在MainFragment中单击“阅读更多”时
newsMore.get(0).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.setCustomAnimations(R.anim.fade_in, R.anim.fade_out);
newsFrag1 newsFragment1 = new newsFrag1();
ft.replace(R.id.fragment_container, newsFragment1);
ft.commit();
}
});
然后它转到newsFrag1,我想在它后面加上箭头
我的工具栏XML
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:context="studio.com.archeagemanager.MainActivity">
<android.support.design.widget.AppBarLayout
android:id="@+id/appBarLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/AppTheme.AppBarOverlay"
app:elevation="0dp">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:layout_weight="1"
android:background="?attr/colorPrimary"
android:gravity="center_vertical"
android:minHeight="56dp"
android:weightSum="1"
app:popupTheme="@style/AppTheme.PopupOverlay">
<ImageView
android:id="@+id/logoToolbar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center" />
</android.support.v7.widget.Toolbar>
</android.support.design.widget.AppBarLayout>
<FrameLayout
android:id="@+id/fragment_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="56dp">
</FrameLayout>
</android.support.design.widget.CoordinatorLayout>
碎片通常不会拦截备份/备份按压。这通常是在活动级别完成的。这背后的原因是因为你可以在屏幕上同时出现多个片段。。。那么,哪一个先处理背压 在你的活动中处理它,考虑跟踪你的前后状态。让我们使用片段计数作为示例状态:
@Override
public void onBackPressed() {
// for every back press, if there is a fragment to remove, then remove it first
if (getFragmentManager().getBackStackEntryCount() > 0) {
getFragmentManager().popBackStack();
return;
}
super.onBackPressed();
}
您还需要确保将原始片段事务添加到backbackback:
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.setCustomAnimations(R.anim.fade_in, R.anim.fade_out);
newsFrag1 newsFragment1 = new newsFrag1();
ft.replace(R.id.fragment_container, newsFragment1);
ft.addToBackStack();
ft.commit();
@Override
public boolean onSupportNavigateUp() {
getSupportFragmentManager().popBackStack();
return true;
}
编辑:我认为从xml来看,您需要的是向上导航,而不是向后导航。如果是这种情况,那么您仍然需要利用backbackback,但所有工作都需要由父活动完成(因为该活动拥有工具栏) 然后覆盖向上按钮,只需弹出后退按钮:
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.setCustomAnimations(R.anim.fade_in, R.anim.fade_out);
newsFrag1 newsFragment1 = new newsFrag1();
ft.replace(R.id.fragment_container, newsFragment1);
ft.addToBackStack();
ft.commit();
@Override
public boolean onSupportNavigateUp() {
getSupportFragmentManager().popBackStack();
return true;
}
共享一些代码…检查一下你的工具栏的xml是什么?在片段中,如果你按下后退按钮,它将进入上一个活动,而不是片段。您必须能够在按下按钮时处理
method@CagriYalcin但是我可以从片段中更改图标?popBackStack是做什么的?我从未见过此方法PopBackstack()反转上一个碎片事务(已添加到backstack)