728x90
반응형

setBackgtoundTintList / getDrawalbe 이 두가지가 오류가 뜨는 이유는 

API가 낮아서에요. 핸드폰을 컴퓨터와  연결하여 사용할때, 오래된 핸드폰의 경우 나오더라구요. 

저도 똑같았구요. 

 

그래서 이것저것 진짜 몇일동안 구글링해서 찾은 방법이에요. 

몇몇 사람들이  올린것도 있는데, 제가 한 코딩이 유투브와, 책, 인터넷에 떠도는거  짜집기해서 한 코딩이여서

보통 올리느 것들은 맞지가 않더라구요 ㅠㅠ 제가 구글링을 못한거일 수도 있지만요.. ㅎㅎㅎ 

 

그래서 혹시나 저와  같은 오류일 경우 이렇게 바꾸시면 좋으실것 같아서 올려보아요. 

 

 

이게 퀴즈앱을 코딩하던  중이였어요. 

코딩시에 북마크를 표시하는 부분인데, 

위에 부분을 눌렀을때 

아래가 나오는 부분을 만들어주는 부분에서 에러가 났었어요. 

 

에러난 부분

@Override
public void onAnimationEnd(Animator animation) {
if (value == 0 ){
try {
((TextView)view).setText(data);
noIndicator.setText(position+1+"/"+list.size());

if (modelmatch()){
bookmarkBtn.setImageDrawable(getDrawable(R.drawable.bookmark));
}else{
bookmarkBtn.setImageDrawable(getDrawable(R.drawable.bookmark_border));
}catch (ClassCastException ex){
((Button)view).setText(data);
}
view.setTag(data);
playAnim(view,1,data);
}

}

 

고친부분

@Override
public void onAnimationEnd(Animator animation) {
if (value == 0 ){
try {
((TextView)view).setText(data);
noIndicator.setText(position+1+"/"+list.size());

if (modelmatch()){
Drawable drawable = ContextCompat.getDrawable(getApplicationContext(),R.drawable.bookmark);
}else{
Drawable drawable = ContextCompat.getDrawable(getApplicationContext(),R.drawable.bookmark_border);
}
}catch (ClassCastException ex){
((Button)view).setText(data);
}
view.setTag(data);
playAnim(view,1,data);
}

}

 

 


이 부분은 퀴즈앱에서 4가지 옵션중에 하나를 선택하였을시, 
맞으면 초록색, 틀리면  빨간색으로  나오고 틀릴시 답부분에 초록색으로 나와라. 라고  하는 코딩이에여.

 

 

에러난 부분

private void checkAnswer(Button selectedOption){
enableOption(false);
nextBtn.setEnabled(true);
nextBtn.setAlpha(1);
if (selectedOption.getText().toString().equals(list.get(position).getCorrectANS())){
//correct
selectedOption.setBackgroundTintList(ColorstateList.valueof(Color.parseColor("#4caf50")));
score++;

}else {
//incorrect
selectedOption.setBackgroundTintList(ColorstateList.valueof(Color.parseColor("#ff0000")));
Button correctoption = (Button) optionsContainer.findViewWithTag(list.get(position).getCorrectANS());
selectedOption.setBackgroundTintList(ColorstateList.valueof(Color.parseColor("#4caf50")));
}


}

고친부분

private void checkAnswer(Button selectedOption){
enableOption(false);
nextBtn.setEnabled(true);
nextBtn.setAlpha(1);
if (selectedOption.getText().toString().equals(list.get(position).getCorrectANS())){
//correct
ViewCompat.setBackgroundTintList(selectedOption, ColorStateList.valueOf(Color.parseColor("#4caf50")));
score++;

}else {
//incorrect
ViewCompat.setBackgroundTintList(selectedOption, ColorStateList.valueOf(Color.parseColor("#ff0000")));
Button correctoption = (Button) optionsContainer.findViewWithTag(list.get(position).getCorrectANS());
ViewCompat.setBackgroundTintList(correctoption, ColorStateList.valueOf(Color.parseColor("#4caf50")));
}


}

 

 


이부분은 선택되지 않은 옵션의 경우에는 선택되지 않고 회색빛을 유지하라는 코딩이에요. 

 

 

에러난 부분

 

private void enableOption(boolean enable){
for (int i = 0; i<4; i++){
optionsContainer.getChildAt(i).setEnabled(enable);
if (enable){
optionsContainer.getChildAt(i).setBackgroundTintList(ColorStateList.valueOf(Color.parseColor("#989898")));
}
}
}

고친부분

private void enableOption(boolean enable){
for (int i = 0; i<4; i++){
optionsContainer.getChildAt(i).setEnabled(enable);
if (enable){
ViewCompat.setBackgroundTintList(optionsContainer.getChildAt(i),ColorStateList.valueOf(Color.parseColor("#989898")));
}
}
}

 

반응형

+ Recent posts