Fragment中的工具栏会在启动时崩溃应用程序

时间:2017-06-28 07:26:31

标签: java android android-fragments android-toolbar

这似乎是一个常见的问题,有许多公认的答案,但似乎没有一个对我有效。

大多数答案都建议使用这段代码将工具栏添加到片段中:

mToolbar = (Toolbar)rootView.findViewById(R.id.toolbar);
    if (mToolbar != null) {
        ((AppCompatActivity) getActivity()).setSupportActionBar(mToolbar);
    }

唉,即使我正在使用AppCompatActivity,这仍然会崩溃我的应用程序。我认为错误可能在于我的Fragment类扩展了Fragment而不是AppCompatActivity,但我还不了解android,因为我还不确定这一点。它在setSupportActionBar行崩溃。

My Fragment代码:

package erikligai.ribbitapplication;

import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

/**
 * Created by erik on 2017-06-07.
 */

public class MessageFragment extends Fragment {

    Toolbar mToolbar;

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
//        return inflater.inflate(R.layout.message_fragment_layout, container, false);
        View rootView = inflater.inflate(R.layout.message_fragment_layout, container, false);

        mToolbar = (Toolbar)rootView.findViewById(R.id.toolbar);
        if (mToolbar != null) {
            ((AppCompatActivity) getActivity()).setSupportActionBar(mToolbar);
        }

        return rootView;
    }

不胜感激任何建议。

1 个答案:

答案 0 :(得分:1)

您需要将活动从getActivity()投射到AppCompatActivity

((AppCompatActivity) getActivity()).getSupportActionBar().setTitle();

Toolbar来自Activity,而不是来自Fragment

mToolbar = (Toolbar)rootView.findViewById(R.id.toolbar);