2017-03-21 2 views
0

Wie der Titel sagt, erhalte ich diesen Fehler beim Interagieren mit einem Spinner. Ich habe bemerkt, dass es viele Post über dieses Argument gibt, aber jeder ist anders (Antworten auch). Leider habe ich keine Lösung gefunden, also frage ich hier. HierProblem mit Spinner: Es wurde versucht, ein Eingabeereignis zu beenden, aber der Eingabeereignisempfänger wurde bereits entfernt

ist ein Screenshot der Spinner:

enter image description here

Wie Sie sehen können, der erste Spinner ist in Ordnung, aber die zweite hat zwei Probleme:

  • erste, Es zeigt keine Werte
  • Zweitens, wenn ich den Spinner tippen, passiert nichts. Wenn ich erneut auf den Drehknopf tippe, erhalte ich den Fehler "Es wurde versucht, ein Eingabeereignis zu beenden, aber der Eingabeereignisempfänger wurde bereits entsorgt."

Vielleicht sind die beiden Dinge sind irgendwie verbunden ...

Hier ist der Code:

public class Settings extends Activity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.settings); 

    Integer[] radiusArray = new Integer[]{500,700,1000,1500,2000,2500,3000,4000,5000}; 
    Integer[] geofenceRadius = new Integer[]{100,200,300,400,500}; 

    try { 

     final Spinner spinnerRA = (Spinner) findViewById(R.id.search_radius); 
     final Spinner spinnerGR = (Spinner) findViewById(R.id.geofence_radius); 

     ArrayAdapter<Integer> adapterRA = new ArrayAdapter<Integer>(this,android.R.layout.simple_spinner_item, radiusArray); 
     spinnerRA.setAdapter(adapterRA); 

     ArrayAdapter<Integer> adapterGR = new ArrayAdapter<Integer>(this,android.R.layout.simple_spinner_item, geofenceRadius); 
     spinnerRA.setAdapter(adapterGR); 

     //Getting from preference files, saved settings, if any 
     //1000 and 100 are default settings 
     final SharedPreferences sharedPref = getSharedPreferences("Settings",Context.MODE_PRIVATE); 
     String temp = getResources().getString(R.string.search_radius); 
     int savedRadius = sharedPref.getInt(temp, 1000); 
     temp = getResources().getString(R.string.geofence_radius); 
     int savedGeofence = sharedPref.getInt(temp, 100); 

     //Show selected value for spinner, or default value 
     int i; 
     for(i=0; i<radiusArray.length; i++){ 
      if(radiusArray[i].equals(savedRadius)){ 
       break; 
      } 
     } 
     spinnerRA.setSelection(i); 

     for(i=0; i<geofenceRadius.length; i++){ 
      if(geofenceRadius[i].equals(savedGeofence)){ 
       break; 
      } 
     } 
     spinnerGR.setSelection(i); 

     Button Save = (Button) findViewById(R.id.save_settings_button); 

     Save.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

       Integer searchRadius = (Integer)spinnerRA.getSelectedItem(); 
       Integer geofenceRadius = (Integer)spinnerGR.getSelectedItem(); 


       //Saving new value of search_radius 
       SharedPreferences.Editor editor = sharedPref.edit(); 
       editor.putInt(getString(R.string.search_radius),searchRadius); 
       editor.putInt(getString(R.string.geofence_radius),geofenceRadius); 

       editor.putBoolean(getString(R.string.initialized),true); 
       editor.commit(); 

       CharSequence text = "Changes saved succesfully!"; 
       int duration = Toast.LENGTH_LONG; 

       Toast toast = Toast.makeText(getApplicationContext(), text, duration); 
       toast.show(); 
      } 


     }); 

    }catch (Exception e){ 
     e.printStackTrace(); 
    } 
} 

}

Und hier ist die XML-Datei:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <TextView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="Settings" 
     android:textSize="14pt" 
     android:layout_marginTop="8pt" 
     android:gravity="center"/> 

    <View android:layout_width="match_parent" 
     android:layout_height="1dp" 
     android:layout_marginTop="5pt" 
     android:id="@+id/second_gray_line" 
     android:background="@android:color/darker_gray"/> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" 
     android:layout_marginTop="10pt"> 

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="match_parent" 
      android:text="Initial search radius (in meters):" 
      android:textColor="#FF8500" 
      android:layout_marginLeft="10pt" 
      android:layout_marginTop="15pt" 
      android:textSize="11pt"/> 

     <Spinner 
      android:layout_width="60pt" 
      android:layout_height="wrap_content" 
      android:id="@+id/search_radius" 
      android:layout_marginTop="5pt" 
      android:layout_marginLeft="5pt"> 
     </Spinner> 

    </LinearLayout> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" 
     android:layout_marginTop="10pt"> 

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="match_parent" 
      android:text="Location radius (in meters):" 
      android:textColor="#FF8500" 
      android:layout_marginLeft="10pt" 
      android:layout_marginTop="15pt" 
      android:textSize="11pt"/> 

     <Spinner 
      android:layout_width="60pt" 
      android:layout_height="wrap_content" 
      android:id="@+id/geofence_radius" 
      android:layout_marginTop="5pt" 
      android:layout_marginLeft="5pt"> 
     </Spinner> 

    </LinearLayout> 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/save_settings_button" 
     android:text="Save Settings" 
     android:textSize="10pt" 
     android:layout_gravity="center" 
     android:layout_marginTop="50pt"/> 

</LinearLayout> 

Ich denke, es ist ein wirklich dummer Fehler, aber ich kann nicht herausfinden, was es verursacht. Kannst du mir helfen? Vielen Dank!

Antwort

0

I gelöst und, wie gesagt, war der Fehler wirklich dumm ... Ich habe einen Fehler gemacht hier, in dem zweiten Adapter:

ArrayAdapter<Integer> adapterGR = new ArrayAdapter<Integer>(this,android.R.layout.simple_spinner_item, geofenceRadius); 
    spinnerRA.setAdapter(adapterGR); 

Dies muss geändert werden:

ArrayAdapter<Integer> adapterGR = new ArrayAdapter<Integer>(this,android.R.layout.simple_spinner_item, geofenceRadius); 
    spinnerGR.setAdapter(adapterGR); 

Es war nur ein Versehen. Ich stellte den zweiten Adapter unter Verwendung spinnerRA anstelle von spinnerGR ein. Jetzt funktioniert es!

Verwandte Themen