2017-08-28 38 views
0

活動從Fragment接收事件,該活動需要創建快餐欄並更改快餐欄的背景。 但這樣做日誌中的錯誤發生這樣的:更改SnackBar BackgroundColor EventBus異常

08-28 16:15:58.233 13491-13491 E/EventBus:類SearchPickingListEvent到訂閱類類HomeActivity 安卓事件無法派遣。 content.res.Resources $ NotFoundException:資源ID#0xffffce00

接收事件片段的方法是這樣的:

@Subscribe(threadMode = ThreadMode.MAIN) 
    public void onSearchListEvent(SearchListEvent searchListEvent) { 
     if (searchListEvent.isSuccess()) { 
      loadingEventsUI(getString(R.string.findingPickingList), Snackbar.LENGTH_INDEFINITE, 
        ContextCompat.getColor(this, R.color.snackbar_background_warning)); 

        controller.fetchInvoice(searchListEvent.getCdCode(), 
        searchListEvent.getPickingListNumber()); 
     } else { 
      showMessage(R.string.orderinvalid); 
     } 
    } 



private void loadingEventsUI(String message, int duration, int color){ 
     mSmoothProgressBar.progressiveStart(); 
     mSmoothProgressBar.setVisibility(View.VISIBLE); 
     mSnackbar = Snackbar.make(btnMainMenu, message, duration); 
     mSnackbar.getView().setBackgroundColor(ContextCompat.getColor(this, color)); 
     mSnackbar.show(); 
    } 

ERRO線 mSnackbar.getView().setBackgroundColor(ContextCompat.getColor(this, color));

回答

1

看起來你是在調用ContextCompat.getColor()兩次:

public void onSearchListEvent(SearchListEvent searchListEvent) { 
    ... 
    loadingEventsUI([message], [duration], ContextCompat.getColor(this, R.color.snackbar_background_warning)); 
    ... 
} 

private void loadingEventsUI(String message, int duration, int color){ 
    ... 
    mSnackbar.getView().setBackgroundColor(ContextCompat.getColor(this, color)); 
    ... 
} 

通話只需更改爲setBackgroundColor()直接使用color