2013-01-04 56 views
0

我想將我的應用程序的徽標放置在屏幕頂部的操作欄中。目前顯示的是默認的綠色android啓動器圖標。更改操作欄中的圖標

enter image description here

我曾嘗試以下,但認爲沒有變化:

我走進我的清單文件,並改變了android:圖標代碼...

<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中沒有生成錯誤。

任何幫助,非常感謝。

+0

'nullpointer',如果它在該行上是ActionBar是'null',則不是可繪製的。無論如何,嘗試清理你的項目,並嘗試使用'android:icon'而不是'logo' –

回答

1

是的,據我所知沒有android:logo財產。你不能只創建一個ActionBar ...你有沒有使用過這個?

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

如果你仍然得到它,也發佈給你NPE的行 - 如果你看整個堆棧跟蹤,你可以看到一個「通過「這條線告訴你更多關於異常的信息。 –

+1

你的回答幫助我解決了這個問題。我所需要做的就是獲得對我的操作欄的引用,這是我在嘗試設置圖標之前沒有完成的。 – Javacadabra

0

一切都是正確的,除了我忘了獲得對ActionBar的引用。下面的代碼解決了這個問題。

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