这似乎是一个常见的问题,有许多公认的答案,但似乎没有一个对我有效。
大多数答案都建议使用这段代码将工具栏添加到片段中:
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;
}
不胜感激任何建议。
答案 0 :(得分:1)
您需要将活动从getActivity()
投射到AppCompatActivity
((AppCompatActivity) getActivity()).getSupportActionBar().setTitle();
Toolbar
来自Activity
,而不是来自Fragment
mToolbar = (Toolbar)rootView.findViewById(R.id.toolbar);