2017-06-01 65 views
0
GrallocAllocator unsupport colortype 6 
GrallocAllocator decode bitmap failed, reset to heapAllocator 

这是我得到的消息。 你能告诉我我做错了什么吗?当获得savedInstanceState时,“GrallocAllocator unsupport colortype 6”

private static final String KEY_INDEX = "index"; 
private static final String KEY_INDEX2 = "index2"; 
private static final String KEY_INDEX3 = "index3"; 
private static final String KEY_INDEX4 = "index4"; 
private static final String KEY_INDEX5 = "index5"; 




@Override 
protected void onCreate(@Nullable Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.easy_quiz); 
     correctAnswerColor = getResources().getColor(R.color.correctAnswerButton); 
     incorrectAnswerColor = getResources().getColor(R.color.incorrectAnswerButton); 

    if(savedInstanceState != null) { 
     mCurrentIndex = savedInstanceState.getInt(KEY_INDEX, 0); 

     if(savedInstanceState.getBoolean(KEY_INDEX2, false)) { 
      mTrueButton.getBackground().setColorFilter(correctAnswerColor, PorterDuff.Mode.MULTIPLY); 
     } 

     if(savedInstanceState.getBoolean(KEY_INDEX3, false)) { 
      mTrueButton.getBackground().setColorFilter(incorrectAnswerColor, PorterDuff.Mode.MULTIPLY); 
     } 

     if(savedInstanceState.getBoolean(KEY_INDEX4, false)) { 
      mFalseButton.getBackground().setColorFilter(correctAnswerColor, PorterDuff.Mode.MULTIPLY); 
     } 

     if(savedInstanceState.getBoolean(KEY_INDEX5, false)) { 
      mFalseButton.getBackground().setColorFilter(incorrectAnswerColor, PorterDuff.Mode.MULTIPLY); 
     } 
    } (...) 

@Override 
protected void onSaveInstanceState(Bundle outState) { 
    super.onSaveInstanceState(outState); 
    Log.i(TAG, "OnSaveInstanceState"); 
    outState.putInt(KEY_INDEX, mCurrentIndex); 
    outState.putBoolean(KEY_INDEX2, mIsTrueButtonGreen); 
    outState.putBoolean(KEY_INDEX3, mIsTrueButtonRed); 
    outState.putBoolean(KEY_INDEX4, mIsFalseButtonGreen); 
    outState.putBoolean(KEY_INDEX5, mIsFalseButtonRed); 

} 

我读过那个设置颜色,很好用getBackground.setColorFilter。不幸的是,它似乎并没有在这种情况下工作。我应该做的是这个问题。

回答

1

您应该修改代码baseed这个:

private int correctAnswerColor, incorrectAnswerColor; 
private String PREFS_NAME = "test"; 
private boolean isColored = false; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    correctAnswerColor = getResources().getColor(R.color.correct); 

    //Sets color 
    findViewById(R.id.button).setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      findViewById(R.id.button).getBackground().setColorFilter(correctAnswerColor, PorterDuff.Mode.MULTIPLY); 
      isColored = true; 
     } 
    }); 


    //Reads color 
    SharedPreferences sp = getSharedPreferences(PREFS_NAME,0); 
    isColored = sp.getBoolean("isValid", isColored); 

    //Sets color of btt 
    if(isColored) { 
     findViewById(R.id.button).getBackground().setColorFilter(correctAnswerColor, PorterDuff.Mode.MULTIPLY); 
    } 
} 

@Override 
protected void onStop() { 
    super.onStop(); 

    //Defines SharedPreferences & Saves data 
    SharedPreferences sp = getSharedPreferences(PREFS_NAME,0); 
    SharedPreferences.Editor ed = sp.edit(); 
    ed.putBoolean("isValid", isColored); 

    //Commits edits 
    ed.commit(); 
} 
+0

你应该考虑增加更多的解释有助于理解OP什么变化和改进。 –