No es posible establecer dinámicamente el parámetro setVisibility ()

Estoy intentando fijar la visibilidad para un botón como sigue:

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; } 

Pero estoy recibiendo el error:

 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. 

Mientras llamas

 getVisibilityState(bundle, PersistanceConstants.START_BTN_STATE) 

No sé cómo solucionar esto. Entiendo que está esperando un determinado conjunto de valores, pero todo lo que sé es pasar un int a ella. ¿Qué se puede hacer aquí?

Cuando sepa lo que está haciendo, puede suprimir esta inspección de Android Studio localmente con

 //noinspection ResourceType 

Por ejemplo,

 //noinspection ResourceType startBtn.setVisibility(bundle.getInt(PersistanceConstants.START_BTN_STATE)); 

Un poco tarde para el partido, pero otra solución si está utilizando esto mucho en su código y tiene un método de devolver que int es definir su propia anotación de visibilidad, por lo que algo así:

 public class MyStuff { @IntDef({View.VISIBLE, View.INVISIBLE, View.GONE}) @Retention(RetentionPolicy.SOURCE) public @interface Visibility { } public @Visibility int getVisibility() { return View.GONE; } } 

Si lo haces, entonces AS no se quejará más porque estás devolviendo un def def propio.

  • Cómo establecer una matriz como etiqueta a cualquier vista a través de diseño xml en android
  • ¿Cómo dejas de que ADT Logcat View aparezca automáticamente en Eclipse?
  • Cómo implementar un deslizamiento de una vista (como feed de noticias en la aplicación de Facebook)
  • Android infla la vista utilizando un objeto de vista existente
  • Android - view.Surface OutOfResourcesException
  • Operación de setContentView de Android
  • Android: necesita devolver la llamada cuando se muestra la vista
  • Vista personalizada no dibujada correctamente
  • No se puede crear una nueva vista en el archivo xml (layout) (java.lang.NoSuchFieldError: No hay campo estático de tipo I)
  • Android - ¿Cómo crear una vista de círculo con Android?
  • Cómo obtengo el ancho y la altura máximos de un dispositivo en android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.