2017-08-28 53 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