2015-05-19 4 views
7

Mein Android Projekt Ziel Bauen ist 5.1.1 API 22Spinner Fehlfunktion auf Lollipop

Diese App scheint für jede Betriebssystem-Version außer Lollipop zu arbeiten. Lollipop restrukturiert die Höhe einiger Aktivitäten (negiert das scrollbare Layout) und stört die Spinner.

Durch Klicken auf eine bestimmte Position auf einem Drehfeld wird eine andere Position in der App eingegeben. Ich weiß nicht warum und ich weiß nicht, wie ich das beheben soll. In einigen Fällen, selbst wenn Sie auf eine Schaltfläche auf dem Drehfeld klicken, wird die unterste Schaltfläche auf dem Drehfeld registriert. Bei einigen Spinnern erlaubt es dem Benutzer überhaupt nicht zu scrollen.

Einer meiner defekten Spinner-Codes ist wie folgt:

ArrayAdapter<String>adapterl4 = new ArrayAdapter<String>(this, 
     android.R.layout.simple_spinner_item,hbmlevel){ 
      public boolean isEnabled(int position){ 
       displayData(position); 
       return true; 
      } 
     }; 
selecthbm = (Spinner)findViewById(R.id.selecthbmlvl); 
adapterl4.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
selecthbm.setAdapter(adapterl4); 
selecthbm.setOnItemSelectedListener(this); 

ich auch eine globale Variable für die Funktion displayData aber ich habe immer noch die gleichen Ergebnisse versucht haben.

Die App ist eine sehr einfache Anwendung, die Sie here herunterladen und läuft auf Java-Compiler Compliance-Ebene 1.7

Der Beginn meiner xml wie folgt aussieht:

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="fill_parent" 
    xmlns:ads="http://schemas.android.com/apk/res-auto" 
    android:fillViewport="true" 
    android:background="#C2DFFF"> 

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="vertical" > 

displayData:

public void displayData(int pos){ 

    herolvlTV.setText(hbmherolvl[pos]); 
    hbmshardTV.setText(getResources().getString(R.string.shards)+" " +String.valueOf(hbmshards[pos])); 
    hbmexpTV.setText(getResources().getString(R.string.maxexp)+" " +String.valueOf(hbmmaxexp[pos])); 
} 
+0

Was Methode 'ist displayData' tut das? – fRoStBiT

+0

@fRoStBiT Es ist nur setText für einige Textansichten – krikara

+0

Warum machst du es in 'isEnabled()'? Sie sollten es in 'getView()' tun. – fRoStBiT

Antwort

3

Hier ist das Problem:

ArrayAdapter<String>adapterl4 = new ArrayAdapter<String>(this, 
     android.R.layout.simple_spinner_item,hbmlevel){ 
      public boolean isEnabled(int position){ 
       displayData(position); 
       return true; 
      } 
     }; 

Die Funktion isEnabled funktioniert auf Lollipop einfach nicht. Die Lösung besteht darin, selecthbm.setOnItemSelectedListener(this); in selecthbm.setOnItemSelectedListener(new OnItemSelectedListener(){...}); zu ändern und die isEnabled Funktion in ihrer Gesamtheit zu entfernen.

Ich weiß nicht, warum die isEnabled Funktion nicht funktioniert. Wenn jemand eine Erklärung geben will, kann ich das Kopfgeld vergeben.