如何在Fragment中添加返回箭头以实现返回操作?
在Android Fragment中添加返回箭头实现页面返回
嘿,这事儿其实挺简单的,我给你拆成几步来操作,保证能顺利搞定:
第一步:配置Toolbar布局
你给出的基础布局已经有了核心配置,我把完整代码补全并格式化好,方便你直接参考:
<android.support.design.widget.AppBarLayout android:id="@+id/appBarLayout" android:layout_width="match_parent" android:layout_height="wrap_content" android:theme="@style/AppTheme.AppBarOverlay"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" app:title="Profile" app:navigationIcon="?attr/homeAsUpIndicator" <!-- **这行是显示系统默认返回箭头的核心配置** --> app:popupTheme="@style/AppTheme.PopupOverlay" /> </android.support.design.widget.AppBarLayout>
如果你的项目已经迁移到AndroidX,记得把布局里的android.support包替换成androidx对应包,比如androidx.appcompat.widget.Toolbar、com.google.android.material.appbar.AppBarLayout。
第二步:在Fragment中设置返回点击逻辑
接下来要在Fragment代码里给箭头绑定返回事件,分Java和Kotlin两种写法供你选择:
Java版本
@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.your_fragment_layout, container, false); // 找到布局中的Toolbar Toolbar toolbar = view.findViewById(R.id.toolbar); // 将Toolbar设置为Activity的ActionBar ((AppCompatActivity) getActivity()).setSupportActionBar(toolbar); // 强制显示返回箭头 Objects.requireNonNull(((AppCompatActivity) getActivity()).getSupportActionBar()).setDisplayHomeAsUpEnabled(true); Objects.requireNonNull(((AppCompatActivity) getActivity()).getSupportActionBar()).setDisplayShowHomeEnabled(true); // 给返回箭头绑定点击事件,触发页面返回 toolbar.setNavigationOnClickListener(v -> getActivity().onBackPressed()); return view; }
Kotlin版本
override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View? { val view = inflater.inflate(R.layout.your_fragment_layout, container, false) val toolbar = view.findViewById<Toolbar>(R.id.toolbar) (activity as AppCompatActivity).setSupportActionBar(toolbar) // 开启返回箭头显示 (activity as AppCompatActivity).supportActionBar?.apply { setDisplayHomeAsUpEnabled(true) setDisplayShowHomeEnabled(true) } // 绑定返回点击逻辑 toolbar.setNavigationOnClickListener { activity?.onBackPressed() } return view }
额外注意点
- 确保Fragment所在的Activity继承自
AppCompatActivity(AndroidX下是androidx.appcompat.app.AppCompatActivity),否则无法使用supportActionBar相关方法。 - 要是想自定义返回箭头图标,直接把
app:navigationIcon的值换成你自己的drawable资源即可,比如app:navigationIcon="@drawable/ic_custom_back_arrow"。
内容的提问来源于stack exchange,提问作者Soniya Joshi
相关产品推荐
相关产品推荐

