【问题标题】:ToolBar Title showing empty in Fragment工具栏标题在片段中显示为空
【发布时间】:2017-01-03 10:50:39
【问题描述】:

我正在尝试在我的片段中添加操作栏工具栏。工具栏正在显示,但标题显示为空。



XML 代码:

<android.support.v7.widget.Toolbar
                android:id="@+id/profile_toolbar"
                android:layout_width="match_parent"
                android:layout_height="?android:attr/actionBarSize"
                android:minHeight="?android:attr/actionBarSize"
                app:layout_collapseMode="pin"
                app:layout_scrollFlags="scroll|exitUntilCollapsed"
                app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
                app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />

这是我的 FragmentActivity:

public class ProfileFragment extends android.support.v4.app.Fragment {
    Toolbar toolbar;

    @Override
    public void onAttach(Context context) {
        super.onAttach(context);
    }

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.activity_profile, container, false);
        toolbar = (Toolbar) getActivity().findViewById(R.id.profile_toolbar);
        ((AppCompatActivity) getActivity()).setSupportActionBar(toolbar);
        ((AppCompatActivity) getActivity()).getSupportActionBar().setTitle("Tamil");
        return view;
    }

}

【问题讨论】:

  • 你设置了支持操作栏的标题吗?我看不到任何((AppCompatActivity) getActivity()).getSupportActionBar().setTitle("Your Title");
  • 您正在从活动中检索工具栏,而不是从您的视图中
  • 为什么要在片段中设置工具栏?通常您会在片段所在的活动中执行此操作,之后您可以在片段中调用 setTitle
  • @DevTamil 您的问题具有误导性。您提到了 FragmentActivity,但您的 sn-p 显示您正在使用 android.support.v4.app.Fragment。正如@Koen 所建议的那样,您应该在您的活动中设置您的工具栏。

标签: android android-fragments android-actionbar android-toolbar android-fragmentactivity


【解决方案1】:

最好在活动本身中设置您的工具栏。否则,每次更改片段时,您总是需要分配额外的内存。如果您在父活动中设置工具栏,则可以调用:

getActivity().setTitle("title");

在片段中。如果你这样做,就不会分配额外的内存,并且更容易维护。

所以:

Toolbar toolbar = (Toolbar) getActivity().findViewById(R.id.profile_toolbar);
((AppCompatActivity) getActivity()).setSupportActionBar(toolbar);

将转到父活动,并将变为:

Toolbar toolbar = (Toolbar) findViewById(R.id.profile_toolbar);
setSupportActionBar(toolbar);

如果您想在片段或活动本身中设置标题:

getActivity().setTitle("title");

【讨论】:

    【解决方案2】:
    toolbar.setTitle("My title");
    

    试试这个

    【讨论】:

      【解决方案3】:

      TypeCast 到你的 ActivityName 而不是这样的 AppCompatActivity

      @Nullable
      @Override
      public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
          View view = inflater.inflate(R.layout.activity_profile, container, false);
          toolbar = (Toolbar) getActivity().findViewById(R.id.profile_toolbar);
          ((YourFragmentActivity) getActivity()).setSupportActionBar(toolbar);
          ((YourFragmentActivity) getActivity()).getSupportActionBar().setTitle("Tamil");
          return view;
      }
      

      【讨论】:

        【解决方案4】:

        虽然这听起来很愚蠢,但请尝试更改工具栏标题的文本颜色。

        toolbar.setTitleTextColor(Color.parseColor("#ffffff"));

        【讨论】:

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