从片段设置自定义ActionBar标题

在我的Main中FragmentActivity,我ActionBar像这样设置我的自定义标题:


    LayoutInflater inflator = (LayoutInflater) this

            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    View v = inflator.inflate(R.layout.custom_titlebar, null);


    TextView tv = (TextView) v.findViewById(R.id.title);

    Typeface tf = Typeface.createFromAsset(this.getAssets(),

            "fonts/capsuula.ttf");

    tv.setTypeface(tf);

    tv.setText(this.getTitle());


    actionBar.setCustomView(v);

这完美。但是,一旦我打开other Fragments,我想更改标题。我不确定如何访问Main Activity来执行此操作?过去,我这样做:


((MainFragmentActivity) getActivity()).getSupportActionBar().setTitle(

            catTitle);

有人可以建议适当的方法吗?


XML:


<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:background="@android:color/transparent" >


    <TextView

        android:id="@+id/title"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:layout_centerVertical="true"

        android:layout_marginLeft="5dp"

        android:ellipsize="end"

        android:maxLines="1"

        android:text=""

        android:textColor="#fff"

        android:textSize="25sp" />


</RelativeLayout>


一只甜甜圈
浏览 562回答 3
3回答

白板的微信

你在做什么是对的。Fragments没有访问ActionBarAPI的权限,因此您必须致电getActivity。除非您Fragment是静态内部类,否则您应该WeakReference为父级创建一个并调用Activity。getActionBar从那里。要ActionBar在使用自定义布局时为您设置标题,您Fragment需要致电getActivity().setTitle(YOUR_TITLE)。你打电话的原因setTitle是因为你打电话getTitle为你的标题ActionBar。getTitle返回该标题Activity。如果你不想让通话getTitle,那么你就需要创建一个公共方法,设置你的文字TextView中Activity承载Fragment。在您的活动中:public void setActionBarTitle(String title){&nbsp; &nbsp; YOUR_CUSTOM_ACTION_BAR_TITLE.setText(title);}在您的片段中:((MainFragmentActivity) getActivity()).setActionBarTitle(YOUR_TITLE);文件:Activity.getTitleActivity.setTitle另外,您无需调用this.whatever提供的代码,只需提示。
打开App,查看更多内容
随时随地看视频慕课网APP