[已解决] 这是解决我问题的代码:
answerTextViewEasy.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.correct_answer));
问题:
我正在尝试添加要与.setText
方法一起显示的文本颜色。这是我尝试使用的,但是当我尝试使用以下代码时,它给了我两个错误(检查下面(。第一个超过 getColor
,说它需要最少的 API 23(我目前正在使用 15(。第二个给出警告"无法解析方法getTheme
"。
任何人都得到了如何通过getColor
并可能使用适用于 API 15 的另一种方法的提示,以及我将如何绕过并解决getTheme
上的红色错误?
answerTextViewEasy.setText(answerText);
answerTextViewEasy.setTextColor(getResources().getColor(R.color.correct_answer, getContext().getTheme()));
answerTextViewEasy.setText(answerText);
answerTextViewEasy.setTextColor(getResources().getColor(R.color.incorrect_answer, getContext().getTheme()));
.
颜色: correct_answer = #00CC00
和 incorrect_answer = #FF0000.
对于上下文,以下是我如何使用编码:
.
这是我的Java文件:
private void checkCorrectness (String chosenCountry) {
if (chosenCountry.equals (countries.get (currentCountryIndex).split (".png")[0])) {
for (int i = 1; i <= correctAnswer; i++) {
currentScore = currentScore + i;
}//for-loop ends here
correctAnswer++;
currentScore++;
//String answer = Integer.toString(correctAnswer);
//correctAnswerTextView.setText("Correct Answers: " + answer);
String score = Integer.toString(currentScore);
currentScoreTextView.setText(score);
String answerText = chosenCountry;
answerTextViewEasy.setText(answerText);
answerTextViewEasy.setTextColor(getResources().getColor(
R.color.correct_answer, getContext().getTheme()));
}else {
currentLives--;
String lives = Integer.toString(currentLives);
currentLivesTextView.setText(lives);
answerTextViewEasy.setText("Incorrect!");
answerTextViewEasy.setTextColor(getResources().getColor(
R.color.incorrect_answer, getContext().getTheme()));
}//else ends here
try {
randomize ();
} catch (Exception e) {
e.printStackTrace ();
}//try-loop ends here
}//checkCorrectness ends here
在版本 23 之后,仅具有参数颜色 id 的旧 getColor 方法被弃用。
您应该使用此函数来支持所有版本。
public static final int getColor(Context context, int id) {
final int version = Build.VERSION.SDK_INT;
if (version >= 23) {
return ContextCompatApi23.getColor(context, id);
} else {
return context.getResources().getColor(id);
}
}
使用ContextCompat
来获取颜色:
answerTextViewEasy.setTextColor(ContextCompat.getColor(getContext(), R.color.correct_answer));
阅读 https://developer.android.com/reference/android/support/v4/content/ContextCompat.html 了解更多详情。
尝试使用 ContextCompat.getColor(getContext((, R.color.correct_answer(