2017-05-25 172 views
0

我在Android Studio中实现微调。我有下面的代码。我收到错误MainActivity must either be declared abstract or implement abstract method onItemSelected(AdapterView<?>, View, int, long) in OnItemSelectedListener。但正如你在下面看到的,我已经实施了onItemSelected(AdapterView<?>, View, int, long)类必须声明为抽象或实现onItemSelected在OnItemSelectedListener中的抽象方法

此外,当我运行的代码,我看到错误MainActivity is not abstract and does not override abstract method onNothingSelected(AdapterView<?>) in OnItemSelectedListener

我缺少什么?

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

回答

1

你应该选择只有一个办法来实现OnItemSelectedListener,其实你已经两个OnItemSelectedListener的方式来实现,而不是覆盖onItemSelected和onNothingSelected方法

// 要么删除此

spinner.setOnItemSelectedListener(新AdapterView.OnItemSelectedListener(){ @Override 公共无效onItemSelected(适配器查看父,观景,INT位置,长的id){// 的东西在这里处理项目选择 }

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

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

OR删除此

工具OnItemSelectedListener //从类声明 微调。 setOnItemSelectedListener(MainActivity.this);

1

你正在做两次,你必须保持一个。此外,移动你的代码的onCreate方法中:

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

您需要实现在OnItemSelectedListener定义的抽象函数能够实例化的活动类。试试这个

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"); 
    } 
} 
相关问题