【问题标题】:Changing the icon in actionbar更改操作栏中的图标
【发布时间】:2013-01-05 02:25:56
【问题描述】:

我想将我的应用程序的徽标放在屏幕顶部的操作栏中。当前显示的是默认的绿色安卓启动器图标。

我尝试了以下方法,但没有发现任何变化:

我进入我的清单文件并更改了 android:icon 代码...

 <application
    android:allowBackup="true"
    android:logo="@drawable/logo"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >

这不起作用,所以我在我的代码中创建了一个 ActionBar 对象并使用了 setIcon 方法。

ab.setIcon(R.drawable.logo);

但是上面的代码行会产生以下运行时错误:

**java.lang.RuntimeException:无法启动活动 ComponentInfo{com.example.waitronproto3/com.example.waitronproto3.MainActivity}:java.lang.NullPointerException **

任何人都可以看到为什么会发生这种情况吗,资源 R.drawable.logo 存在,因为我可以在文件夹中看到它并且在 IDE 中没有生成错误。

非常感谢任何帮助。

【问题讨论】:

  • nullpointer,如果该行是 ActionBar 是 null,而不是可绘制对象。无论如何,尝试清理您的项目,并尝试使用android:icon 而不是logo

标签: android nullpointerexception android-actionbar


【解决方案1】:

是的,据我所知,没有 android:logo 属性。你不能只创建一个ActionBar...你用过这个吗?

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(...);
    getActionBar().setLogo(R.drawable.logo)`
}

【讨论】:

  • 如果你仍然得到它,也发布给你 NPE 的行 - 如果你查看整个堆栈跟踪,你会看到一个“由”行,它告诉你有关异常的更多信息。跨度>
  • 您的回答帮助我解决了问题。我所要做的就是获得对我在尝试设置图标之前没有做过的操作栏的引用。
【解决方案2】:

一切都是正确的,只是我忘记获取对 ActionBar 的引用。下面的代码解决了这个问题。

ab = this.getActionBar();
    ab.setIcon(R.drawable.logo);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-01
    • 2015-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多