片段中的工具栏在启动时崩溃应用程序
问题描述:
这似乎是一个常见问题,有很多被接受的答案,但它们都不适合我。片段中的工具栏在启动时崩溃应用程序
大多数的答案建议使用这段代码将工具栏添加到一个片段:
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;
}
将不胜感激的任何建议。
答
您需要将活动从Fragment
mToolbar = (Toolbar)rootView.findViewById(R.id.toolbar);
投从
getActivity()
到AppCompatActivity
Toolbar
从Activity
饶人,我不认为你有NullPointerException异常。 你为什么试图从工具栏的片段视图? – fbwnd发布你的logcat。 – SripadRaj
此外,委托工具栏的通货膨胀活动,而不是片段 –