Der Parameter setVisibility () kann nicht dynamisch gesetzt werden

Ich versuche, die Sichtbarkeit für einen Knopf wie folgt zu setzen:

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

Aber ich bekomme den Fehler:

 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. 

Beim rufen

 getVisibilityState(bundle, PersistanceConstants.START_BTN_STATE) 

Ich weiß nicht, wie man das umkommt. Ich verstehe, dass es eine vorgegebene Menge von Werten erwartet, aber alles was ich weiß, ist, einen int zu übergeben. Was kann hier gemacht werden?

  • Android AudioRecord zwingt einen anderen Stream zur MIC Audio Quelle
  • Android: Kamera wechseln, wenn die Schaltfläche geklickt hat
  • Appium kann keine "content-desc" Attributdaten erhalten
  • Android: Wie man eine Schnittstelle von einer Aktivität zur anderen sendet
  • Der Versuch, Holo-Theme in Android zu verwenden, funktioniert nicht
  • Speicherzuweisungsprobleme mit Androidanwendung
  • Realm: schaffen Beziehungen durch IDs
  • Skype startet Dialing und hängt nach 2 Sekunden - Android
  • 2 Solutions collect form web for “Der Parameter setVisibility () kann nicht dynamisch gesetzt werden”

    Wenn du weißt, was du tust, kannst du diese Android Studio Inspektion vor Ort unterdrücken

     //noinspection ResourceType 

    Beispielsweise,

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

    Ein bisschen spät zur Party aber eine andere Lösung, wenn du das viel in deinem Code nimmst und du hast eine Methode, die zurückgibt, dass int ist, deine eigene Sichtbarkeits-Annotation zu definieren, also so etwas wie dieses:

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

    Wenn Sie dies tun, dann AS wird nicht mehr beschweren, weil Sie eine richtige int def zurückgeben.

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.