Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/199.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
android.support.v7.widget.Toolbar.getNavigationIcon()返回null_Android_Nullpointerexception_Drawable_Android Toolbar - Fatal编程技术网

android.support.v7.widget.Toolbar.getNavigationIcon()返回null

android.support.v7.widget.Toolbar.getNavigationIcon()返回null,android,nullpointerexception,drawable,android-toolbar,Android,Nullpointerexception,Drawable,Android Toolbar,我在我的项目中有一些课程…但其中一个给了我一些我无法独自解决的问题 下面是给我带来麻烦的onCreate方法: @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.setting); toolbar = (android.support.v7.widget.Toolbar)find

我在我的项目中有一些课程…但其中一个给了我一些我无法独自解决的问题

下面是给我带来麻烦的onCreate方法:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.setting);
    toolbar = (android.support.v7.widget.Toolbar)findViewById(R.id.toolbar_002);
    toolbar.setBackgroundColor(Common.color);
    toolbar.setTitleTextColor(Common.compatible(Common.color, 0xFF000000) ? 0xFF000000 : 0xFFFFFFFF);
    setSupportActionBar(toolbar);
    getSupportActionBar().setDisplayShowTitleEnabled(true);
    getSupportActionBar().setTitle("Settings");
    colorFilter = new PorterDuffColorFilter(Common.compatible(Common.color, 0xFF000000) ? 0xFF000000 : 0xFFFFFFFF, PorterDuff.Mode.MULTIPLY);
    toolbar.getNavigationIcon().setColorFilter(colorFilter);
    toolbar.setNavigationOnClickListener(new Button.OnClickListener() {
        @Override
        public void onClick(View v) {
            main = new Intent(SettingActivity.this, MainActivity.class);
            main.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT | Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT);
            finish();
            startActivity(main);
            overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);
        }
    });
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    getSupportActionBar().setDisplayShowHomeEnabled(true);
    getSupportActionBar().setDisplayShowTitleEnabled(true);
    getSupportActionBar().setHomeButtonEnabled(true);
    FragmentTransaction mFragmentTransaction = getFragmentManager().beginTransaction();
    mFragmentTransaction.replace(R.id.container, new PrefsFragment());
    mFragmentTransaction.commit();
}
当我启动活动时,我会得到以下日志:

08-15 18:48:11.709 27903 27903 E   AndroidRuntime                               FATAL EXCEPTION: main
08-15 18:48:11.709 27903 27903 E   AndroidRuntime                               Process: fr.zwedge.kingwarrior, PID: 27903
08-15 18:48:11.709 27903 27903 E   AndroidRuntime                               java.lang.RuntimeException: Unable to start activity ComponentInfo{fr.zwedge.kingwarrior/fr.zwedge.kingwarrior.SettingActivity}: java.lang.NullPointerException
08-15 18:48:11.709 27903 27903 E   AndroidRuntime                               at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2338)
08-15 18:48:11.709 27903 27903 E   AndroidRuntime                               at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2390)
08-15 18:48:11.709 27903 27903 E   AndroidRuntime                               at android.app.ActivityThread.access$800(ActivityThread.java:151)
08-15 18:48:11.709 27903 27903 E   AndroidRuntime                               at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1321)
08-15 18:48:11.709 27903 27903 E   AndroidRuntime                               at android.os.Handler.dispatchMessage(Handler.java:110)
08-15 18:48:11.709 27903 27903 E   AndroidRuntime                               at android.os.Looper.loop(Looper.java:193)
08-15 18:48:11.709 27903 27903 E   AndroidRuntime                               at android.app.ActivityThread.main(ActivityThread.java:5299)
08-15 18:48:11.709 27903 27903 E   AndroidRuntime                               at java.lang.reflect.Method.invokeNative(Native Method)
08-15 18:48:11.709 27903 27903 E   AndroidRuntime                               at java.lang.reflect.Method.invoke(Method.java:515)
08-15 18:48:11.709 27903 27903 E   AndroidRuntime                               at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:829)
08-15 18:48:11.709 27903 27903 E   AndroidRuntime                               at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:645)
08-15 18:48:11.709 27903 27903 E   AndroidRuntime                               at dalvik.system.NativeStart.main(Native Method)
08-15 18:48:11.709 27903 27903 E   AndroidRuntime                               Caused by: java.lang.NullPointerException
08-15 18:48:11.709 27903 27903 E   AndroidRuntime                               at fr.zwedge.kingwarrior.SettingActivity.onCreate(SettingActivity.java:113)
08-15 18:48:11.709 27903 27903 E   AndroidRuntime                               at android.app.Activity.performCreate(Activity.java:5264)
08-15 18:48:11.709 27903 27903 E   AndroidRuntime                               at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1088)
08-15 18:48:11.709 27903 27903 E   AndroidRuntime                               at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2302)
08-15 18:48:11.709 27903 27903 E   AndroidRuntime                               ... 11 more
请…你能帮我解决这个问题吗?
谢谢,Darkball60。

我认为这部分
getNavigationIcon()
返回空值。尝试先按如下方式设置导航图标:

toolbar.setNavigationIcon(ContextCompat.getDrawable(this, R.drawable.abc_ic_ab_back_mtrl_am_alpha));

在那之后,你不应该得到一个
NullPointerException

我添加了你建议的行…而且…它工作了…但是现在…我的滤色器不工作了,箭头一直是黑色而不是白色…为什么?我想它会考虑颜色本身,在较亮的背景上选择黑色,在屏幕上选择白色深色背景。我使用相同的代码,我的箭头是白色的。你可以用谷歌搜索一下:)哦……怎么可能呢?老实说,我不知道:D分析工具栏的颜色,然后使用不同颜色的箭头。实施起来不应该特别困难。如果你不喜欢,只需使用一个普通的白色箭头,它就会工作。好吧……那么……我只是在另一次阅读这篇文章……并找到了有效的解决方案:我只需要使用getSupportActionBar()。setHomeAsUpIndicator(向上箭头),它工作得很好