无法在扩展FragmentActivity的类中解析方法getActivity()

时间:2015-10-27 15:58:32

标签: android fragment android-fragmentactivity android-toolbar

我在一个类中扩展了Fragment Activity,我还需要一个自定义工具栏。所以,我添加了代码以获取工具栏,但是setSupportActionBar(工具栏)不起作用。然后,我添加了AppCompatActivity.getActivity()以进行强制转换,但这种方式也不起作用。

这是代码 -

public class main_fragment extends FragmentActivity implements FragmentDrawer.FragmentDrawerListener {
private Toolbar toolbar;
private FragmentDrawer drawerFragment;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main_fragment);

    toolbar = (Toolbar) findViewById(R.id.tool_bar);
    ((AppCompatActivity) getActivity()).setSupportActionBar(toolbar);
    ((AppCompatActivity) getActivity()).getSupportActionBar().setDisplayShowHomeEnabled(true);

    drawerFragment = (FragmentDrawer)
            getSupportFragmentManager().findFragmentById(R.id.fragment_navigation_drawer);
    drawerFragment.setUp(R.id.fragment_navigation_drawer, (DrawerLayout) findViewById(R.id.drawer_layout), toolbar);
    drawerFragment.setDrawerListener(this);

}

2 个答案:

答案 0 :(得分:3)

AppCompatActivity延伸FragmentActivity。你需要改变的第一件事是

extends FragmentActivity

extends AppCompatActivity

getActivity()Fragment的一种方法。 Activity没有这种方法,因此您无需调用它来使用setSupportActionBargetSupportActionBar

setSupportActionBar(toolbar);
getSupportActionBar().setDisplayShowHomeEnabled(true);

答案 1 :(得分:0)

这是设置工具栏的材料方式。 1 /在XML中声明它。 2 /在活动/片段类中膨胀后找到它。 3 /配置标题,菜单等。

<?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"
android:layout_width="match_parent"
android:layout_height="match_parent">

<android.support.design.widget.AppBarLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

</android.support.design.widget.AppBarLayout>
</android.support.design.widget.CoordinatorLayout>

在Fragment / Activity中找到工具栏。

mToolbar = (Toolbar) view.findViewById(R.id.toolbar);
mToolbar.setTitle(/*your title*/);
mToolbar.inflateMenu(/* menu res id here*/);
mToolbar.setOnMenuItemClickListener(new OnMenuItemClickLister(/*override the click methods with item.getId == your id*/));