I am trying to set the visibility for a button as follows:
JavaScript
x
public Bundle setActivityState(Bundle bundle){
startBtn = (Button) findViewById(R.id.startSensorsBtn);
startBtn.setVisibility(
getVisibilityState(bundle, PersistanceConstants.START_BTN_STATE)
);
return bundle;
}
public int getVisibilityState(Bundle bundle, String keyName){
if (bundle.getInt(keyName) == View.VISIBLE){
return View.VISIBLE;
} else if (bundle.getInt(keyName) == View.INVISIBLE){
return View.INVISIBLE;
} else if (bundle.getInt(keyName) == View.GONE){
return View.GONE;
}
return 0;
}
But I am getting the error:
JavaScript
Must be one of: View.VISIBLE, View.INVISIBLE, View.GONE less (Ctrl+F1)
Reports two types of problems:
- Supplying the wrong type of resource identifier. For example, when calling Resources.getString(int id), you should be passing R.string.something, not R.drawable.something.
- Passing the wrong constant to a method which expects one of a specific set of constants. For example, when calling View#setLayoutDirection, the parameter must be android.view.View.LAYOUT_DIRECTION_LTR or android.view.View.LAYOUT_DIRECTION_RTL.
while calling
JavaScript
getVisibilityState(bundle, PersistanceConstants.START_BTN_STATE)
I don’t know how to get around this. I understand that it’s expecting a given set of values but all I know is to pass an int
to it. What can be done here?
Advertisement
Answer
When you know what you’re doing, you can suppress this Android Studio inspection locally with
JavaScript
//noinspection ResourceType
For example,
JavaScript
//noinspection ResourceType
startBtn.setVisibility(bundle.getInt(PersistanceConstants.START_BTN_STATE));