2017-05-25 4 views
0

Ich implementiere Spinner in Android Studio. Ich habe den folgenden Code. Ich erhalte den Fehler MainActivity must either be declared abstract or implement abstract method onItemSelected(AdapterView<?>, View, int, long) in OnItemSelectedListener. Aber wie Sie unten sehen können, habe ich onItemSelected(AdapterView<?>, View, int, long) implementiert.Klasse muss entweder als abstrakt deklariert werden oder abstrakte Methode implementieren onItemSelected in OnItemSelectedListener

Auch, wenn ich den Code ausführen, sehe ich Fehler MainActivity is not abstract and does not override abstract method onNothingSelected(AdapterView<?>) in OnItemSelectedListener

Was bin ich?

public class MainActivity extends AppCompatActivity implements OnItemSelectedListener{ 

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     final Context context = getApplicationContext(); 

setContentView(R.layout.activity_main); 

     Spinner spinner = (Spinner) findViewById(R.id.spinner_supplychainEntities); 

     ArrayAdapter adapter = ArrayAdapter.createFromResource(this, 
       R.array.spinner_options, android.R.layout.simple_spinner_item); 

     spinner.setOnItemSelectedListener(MainActivity.this); 
     spinner.setAdapter(adapter); 

} 

spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
      @Override 
      public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
       //stuff here to handle item selection 
      } 

      @Override 
      public void onNothingSelected(AdapterView<?> parent) { 

       Log.i("GTOUTOUT", "Nothing Selected"); 
      } 
     }); 
} 

Antwort

1

Sie sollten nur einen Weg wählen OnItemSelectedListener zu implementieren, eigentlich haben Sie realisiert sowohl die Art und Weise von OnItemSelectedListener und nicht die onItemSelected außer Kraft setzen und onNothingSelected Methoden

// Entfernen Sie entweder diese

spinner.setOnItemSelectedListener (neu AdapterView.OnItemSelectedListener() { @Override public void onItemSelected (Adapter Eine Ebene, Ansicht Ansicht, int Position, long id)

 @Override 
     public void onNothingSelected(AdapterView<?> parent) { 

      Log.i("GTOUTOUT", "Nothing Selected"); 
     } 
    }); 

OR REMOVE diese

implementiert OnItemSelectedListener // von class-Anweisung Spinner { // hier Sachen Artikelauswahl behandeln}. setOnItemSelectedListener (MainActivity.this);

1

Sie tun es zweimal, Sie müssen nur eins behalten. Auch den Code in Ihrer onCreate Methode bewegen:

public class MainActivity extends AppCompatActivity { 

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     final Context context = getApplicationContext(); 

     setContentView(R.layout.activity_main); 

     Spinner spinner = (Spinner) findViewById(R.id.spinner_supplychainEntities); 

     ArrayAdapter adapter = ArrayAdapter.createFromResource(this, 
       R.array.spinner_options, android.R.layout.simple_spinner_item); 

     spinner.setAdapter(adapter); 
     spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
      @Override 
      public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
       //stuff here to handle item selection 
      } 

      @Override 
      public void onNothingSelected(AdapterView<?> parent) { 

       Log.i("GTOUTOUT", "Nothing Selected"); 
      } 
     }); 
    } 
    } 
0

Sie müssen die abstrakten Funktionen in OnItemSelectedListener definiert implementieren zu können, Ihre Aktivitätsklasse instanziiert. Versuchen Sie, diese

public class MainActivity extends AppCompatActivity implements OnItemSelectedListener { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     final Context context = getApplicationContext(); 

     setContentView(R.layout.activity_main); 

     Spinner spinner = (Spinner) findViewById(R.id.spinner_supplychainEntities); 

     ArrayAdapter adapter = ArrayAdapter.createFromResource(this, 
      R.array.spinner_options, android.R.layout.simple_spinner_item); 

     spinner.setOnItemSelectedListener(this); 
     spinner.setAdapter(adapter); 

    } 

    @Override 
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
     //stuff here to handle item selection 
    } 

    @Override 
    public void onNothingSelected(AdapterView<?> parent) { 

     Log.i("GTOUTOUT", "Nothing Selected"); 
    } 
} 
Verwandte Themen