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中。