Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/218.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 启动时应用程序中的工具栏崩溃_Java_Android_Android Fragments_Android Toolbar - Fatal编程技术网

Java 启动时应用程序中的工具栏崩溃

Java 启动时应用程序中的工具栏崩溃,java,android,android-fragments,android-toolbar,Java,Android,Android Fragments,Android Toolbar,这似乎是一个常见的问题,有很多被接受的答案,但似乎没有一个适合我 大多数答案建议使用这段代码将工具栏添加到片段中: mToolbar = (Toolbar)rootView.findViewById(R.id.toolbar); if (mToolbar != null) { ((AppCompatActivity) getActivity()).setSupportActionBar(mToolbar); } 唉,即使我正在使用AppCompatActivit

这似乎是一个常见的问题,有很多被接受的答案,但似乎没有一个适合我

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

mToolbar = (Toolbar)rootView.findViewById(R.id.toolbar);
    if (mToolbar != null) {
        ((AppCompatActivity) getActivity()).setSupportActionBar(mToolbar);
    }
唉,即使我正在使用AppCompatActivity,这仍然会使我的应用程序崩溃。我认为错误可能在于,我的Fragment类扩展了Fragment而不是AppCompatActivity,但我对android的了解还不够,因此无法确定这一点。它在setSupportActionBar行上崩溃

我的片段代码:

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;
    }

如有任何建议,我们将不胜感激

您需要将活动从
getActivity()
强制转换为
AppCompatActivity

((AppCompatActivity) getActivity()).getSupportActionBar().setTitle();
工具栏
活动
获取,而不是从
片段

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

我假设您有NullPointerException。为什么你要把工具栏从片段视图中移除?发布你的日志。还有,将工具栏扩展委托给activity,而不是fragmentjava.lang.ClassCastException:erikligai.ribbitapplication.MainActivity不能强制转换为android.support.v7.app.AppCompatiActivity为什么选择在Fragment上这样做,而您也可以在activity中这样做,我建议您在活动中定义工具栏,而不是在Fragment中。