【问题标题】:How to add "UP" back button in fragment (Fragment to Activity)如何在片段中添加“UP”后退按钮(片段到活动)
【发布时间】:2018-01-02 21:35:16
【问题描述】:

我想使用工具栏后退图标使用后退按钮从片段转到活动。

片段是我的导航抽屉项,活动是我的 MainActivity。

我该怎么做?

【问题讨论】:

  • 你做了什么来创建它的?

标签: android android-fragments android-intent android-toolbar navigation-drawer


【解决方案1】:

您可以使用app:navigationIcon="?attr/homeAsUpIndicator" 作为返回导航图标。

 <android.support.v7.widget.Toolbar
            android:id="@+id/toolbarId"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            app:navigationIcon="?attr/homeAsUpIndicator"/>

导航:

Toolbar toolbar = (ToolBar) getActivity().findViewById(R.id.toolbarId);

toolbar.setNavigationOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            getActivity().onBackPressed();
        }
    });

【讨论】:

  • 在您的布局文件中。
  • 错误显示:app:layout_collapseMode="pin" app:navigationIcon="?attr/homeAsUpIndicator
  • 去掉那个collapseMode
  • 但在 (app:navigationIcon="?attr/homeAsUpIndicator") 中仍然显示错误(应用为红色)
  • xmlns:app="schemas.android.com/apk/res-auto" 在你的父布局中使用它。
【解决方案2】:

在您的片段 onCreateView 中调用此方法

public void showBackButton() {
if (getActivity() instanceof ActionBarActivity) {
    ((ActionBarActivity) getActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
}

【讨论】:

  • 这是最好的答案
  • 在片段 onCreateView 内
  • 在把这段代码(return v;) v 是红色的之后,我把这段代码放在(return v;) 之后,但仍然显示红色怎么办
  • 这显示了你的工具栏,但它不会导航回上一个片段..
【解决方案3】:

将此 xml 代码添加到您的片段并尝试

<android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="#FFFFFF"
        android:layout_gravity="center"
        android:gravity="center_horizontal">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Title Here"
            android:typeface="serif"
            android:layout_gravity="center"
            android:id="@+id/toolbar_title"
            android:textSize="20sp"
            android:textColor="@android:color/black"/>

        <ImageView
            android:id="@+id/ivback_water"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_centerVertical="true"
            android:padding="15dp"
            android:scaleType="fitCenter"
            android:layout_gravity="left"
            android:background="@drawable/ic_arrow_back_black_24dp" />


    </android.support.v7.widget.Toolbar>

【讨论】:

  • 我要求您在检入设计部分之后将此代码添加到 xml 中。不需要任何片段代码
  • 一旦后退按钮可见,请意图调用它以从片段转到活动
【解决方案4】:

试试这个对我有用:

  1. 在 XML 中:

    <android.support.v7.widget.Toolbar
     android:id="@+id/profileToolbar"
     android:layout_width="match_parent"
     android:layout_height="wrap_content">
    
  2. 在可绘制文件夹中创建一个后退箭头图标。将其命名为“ic_back_button”。 不知道如何:-
    只需右键单击 drawable > new > ImageAsset > Clip Art > Search back > 选择 > OK > Finish(不要忘记更改名称)。

  3. 然后在 onCreateView 中的片段内部:

        Toolbar toolbar = view.findViewById(R.id.profileToolbar);
        toolbar.setNavigationIcon(R.drawable.ic_back_button);
        toolbar.setNavigationOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
          getActivity().onBackPressed();
        }
        });
    

【讨论】:

    【解决方案5】:

    如果您使用的是放置在 自定义 顶部应用栏上的 自定义 后退按钮,您可以轻松做到这一点,在按钮的 onClick() 函数中,您可以打电话.. getActivity().onBackPressed(); 它的工作原理就像您单击了 android 导航的后退按钮一样...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多