2016-03-05 68 views
-2

我用這個:這個說法不起作用。 [要求: 'android.content.context'

actionBar.setBackgroundColor(ContextCompat.getColor(this, R.color.action_bar)); 

要從color.xml使用的顏色。

它的偉大工程,但在某些代碼,它說:

Wrong 1st argument type. Found: 'org.telegram.ui.ActionBar.BaseFragment', required: 'android.content.Context' 

但我導入android.content.Context:

import android.content.Context; 

我試圖用的,而不是 '本':

actionBar.setBackgroundColor(ContextCompat.getColor(context, R.color.action_bar)); 

但是比Android Studio說的是:

Cannot resolve symbol 'context' 
+1

當您在一個片段是不能傳遞'this'爲它的一個片段,而不是一個活動,因此不Context'的'亞型。改用'getContext()'。 – m02ph3u5

+0

片段不是語境 –

回答

0

Fragment不是Context的子類型。

當一個片段中使用:

ContextCompat.getColor(getContext(), R.color.action_bar) 

當一個活動中您可以使用:

ContextCompat.getColor(this, R.color.action_bar) 
+0

與上面相同。 Android Studio說:無法解析符號:'getContext()' –

+0

什麼是'org.telegram.ui.ActionBar.BaseFragment'?如果它是androids'Fragment'的子類,並且你沒有與getContext()或getActivity()混淆,那麼它們應該可以工作。也看到http://stackoverflow.com/questions/8215308/using-context-in-a-fragment – m02ph3u5

1

使用

getActivity().getApplicationContext() 

,而不是

this 
+1

沒有比Android工作室說:無法解析符號:'getActivity()' –

1

用途:

actionBar.setBackgroundColor(ContextCompat.getColor(getApplicationContext(), 

R.color.action_bar));