Java 无法在Android studio中为微调器设置onItemSelectedListener

Java 无法在Android studio中为微调器设置onItemSelectedListener,java,android,android-layout,spinner,Java,Android,Android Layout,Spinner,这是我的主要活动 public class MainActivity extends AppCompatActivity implements MaterialSearchBar.OnSearchActionListener { Spinner spinner; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState

这是我的主要活动

public class MainActivity extends AppCompatActivity implements MaterialSearchBar.OnSearchActionListener {

    Spinner spinner;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        spinner = (Spinner) findViewById(R.id.sort_spinner);
        ArrayAdapter<CharSequence> spinnerAadapter = ArrayAdapter.createFromResource(this,
                R.array.sort_array, android.R.layout.simple_spinner_item);
        spinnerAadapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner.setAdapter(spinnerAadapter);

    }

    @Override
    public void onSearchStateChanged(boolean enabled) {

    }

    @Override
    public void onSearchConfirmed(CharSequence text) {

    }

    @Override
    public void onButtonClicked(int buttonCode) {

    }
}
但安卓工作室的每一个方面都给了我编译时错误。 为微调器选择哪种可能且正确的方法以及如何选择

错误:

代码:

公共类MainActivity扩展AppCompativeActivity实现MaterialSearchBar.OnSearchActionListener、AdapterView.OnItemSelectedListener{
纺纱机;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
微调器=(微调器)findViewById(R.id.sort\u微调器);
ArrayAdapter SpinnerAdapter=ArrayAdapter.createFromResource(此,
R.array.sort\u数组,android.R.layout.simple\u微调器\u项);
spinnerAdapter.setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
spinner.setAdapter(spinneraladapter);
spinner.setOnItemClickListener(this);
}
@凌驾
SearchStateChanged上的公共void(已启用布尔值){
}
@凌驾
搜索已确认的公共无效(字符序列文本){
}
@凌驾
公共无效onButtonClicked(int buttonCode){
}
@凌驾
已选择公共视图(AdapterView父视图、视图视图、整型位置、长id){
}
@凌驾
未选择公共无效(AdapterView父级){
}
}
使用匿名类:

public class MainActivity extends AppCompatActivity implements MaterialSearchBar.OnSearchActionListener {

    Spinner spinner;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        spinner = (Spinner) findViewById(R.id.sort_spinner);
        ArrayAdapter<CharSequence> spinnerAadapter = ArrayAdapter.createFromResource(this,
                R.array.sort_array, android.R.layout.simple_spinner_item);
        spinnerAadapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner.setAdapter(spinnerAadapter);
        spinner.setOnItemClickListener(new AdapterView.OnItemSelectedListener(){

            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {

            }

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

            }
        });
    }

    @Override
    public void onSearchStateChanged(boolean enabled) {

    }

    @Override
    public void onSearchConfirmed(CharSequence text) {

    }

    @Override
    public void onButtonClicked(int buttonCode) {

    }
}
公共类MainActivity扩展AppCompative实现MaterialSearchBar.OnSearchActionListener{
纺纱机;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
微调器=(微调器)findViewById(R.id.sort\u微调器);
ArrayAdapter SpinnerAdapter=ArrayAdapter.createFromResource(此,
R.array.sort\u数组,android.R.layout.simple\u微调器\u项);
spinnerAdapter.setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
spinner.setAdapter(spinneraladapter);
spinner.setOnItemClickListener(新的AdapterView.OnItemSelectedListener(){
@凌驾
已选择公共视图(AdapterView父视图、视图视图、整型位置、长id){
}
@凌驾
未选择公共无效(AdapterView父级){
}
});
}
@凌驾
SearchStateChanged上的公共void(已启用布尔值){
}
@凌驾
搜索已确认的公共无效(字符序列文本){
}
@凌驾
公共无效onButtonClicked(int buttonCode){
}
}
使用内部类:

public class MainActivity extends AppCompatActivity implements MaterialSearchBar.OnSearchActionListener{

    Spinner spinner;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        spinner = (Spinner) findViewById(R.id.sort_spinner);
        ArrayAdapter<CharSequence> spinnerAadapter = ArrayAdapter.createFromResource(this,
                R.array.sort_array, android.R.layout.simple_spinner_item);
        spinnerAadapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner.setAdapter(spinnerAadapter);
        spinner.setOnItemClickListener(new spinner_class());
     }

    @Override
    public void onSearchStateChanged(boolean enabled) {

    }

    @Override
    public void onSearchConfirmed(CharSequence text) {

    }

    @Override
    public void onButtonClicked(int buttonCode) {

    }

    public class spinner_class implements AdapterView.OnItemSelectedListener{

        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {

        }

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

        }
    }
}
公共类MainActivity扩展AppCompative实现MaterialSearchBar.OnSearchActionListener{
纺纱机;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
微调器=(微调器)findViewById(R.id.sort\u微调器);
ArrayAdapter SpinnerAdapter=ArrayAdapter.createFromResource(此,
R.array.sort\u数组,android.R.layout.simple\u微调器\u项);
spinnerAdapter.setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
spinner.setAdapter(spinneraladapter);
setOnItemClickListener(新的微调器_类());
}
@凌驾
SearchStateChanged上的公共void(已启用布尔值){
}
@凌驾
搜索已确认的公共无效(字符序列文本){
}
@凌驾
公共无效onButtonClicked(int buttonCode){
}
公共类微调器_类实现AdapterView.OnItemSelectedListener{
@凌驾
已选择公共视图(AdapterView父视图、视图视图、整型位置、长id){
}
@凌驾
未选择公共无效(AdapterView父级){
}
}
}
这样就不会有任何错误,但是否正确:

public class MainActivity extends AppCompatActivity implements MaterialSearchBar.OnSearchActionListener{

    Spinner spinner;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        spinner = (Spinner) findViewById(R.id.sort_spinner);
        ArrayAdapter<CharSequence> spinnerAadapter = ArrayAdapter.createFromResource(this,
                R.array.sort_array, android.R.layout.simple_spinner_item);
        spinnerAadapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner.setAdapter(spinnerAadapter);
        spinner.setOnItemClickListener((AdapterView.OnItemClickListener) new spinner_class());
     }

    @Override
    public void onSearchStateChanged(boolean enabled) {

    }

    @Override
    public void onSearchConfirmed(CharSequence text) {

    }

    @Override
    public void onButtonClicked(int buttonCode) {

    }
    public class spinner_class implements AdapterView.OnItemSelectedListener{

        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {

        }

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

        }
    }
}
公共类MainActivity扩展AppCompative实现MaterialSearchBar.OnSearchActionListener{
纺纱机;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
微调器=(微调器)findViewById(R.id.sort\u微调器);
ArrayAdapter SpinnerAdapter=ArrayAdapter.createFromResource(此,
R.array.sort\u数组,android.R.layout.simple\u微调器\u项);
spinnerAdapter.setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
spinner.setAdapter(spinneraladapter);
spinner.setOnItemClickListener((AdapterView.OnItemClickListener)新的微调器_类());
}
@凌驾
SearchStateChanged上的公共void(已启用布尔值){
}
@凌驾
搜索已确认的公共无效(字符序列文本){
}
@凌驾
公共无效onButtonClicked(int buttonCode){
}
公共类微调器_类实现AdapterView.OnItemSelectedListener{
@凌驾
已选择公共视图(AdapterView父视图、视图视图、整型位置、长id){
}
@凌驾
未选择公共无效(AdapterView父级){
}
}
}

我打赌(因为既不知道错误消息也不知道确切的方法
setOnItemSelectedListener
在代码中的调用位置),您必须在
MainActivity
中实现
OnItemSelectedListener
而不是
AdapterView.OnItemSelectedListener
接口。已描述。

在oncreate方法中添加setOnItemClickListener

public class MainActivity extends AppCompatActivity implements MaterialSearchBar.OnSearchActionListener {

    Spinner spinner;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        spinner = (Spinner) findViewById(R.id.sort_spinner);
        ArrayAdapter<CharSequence> spinnerAadapter = ArrayAdapter.createFromResource(this,
                R.array.sort_array, android.R.layout.simple_spinner_item);
        spinnerAadapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner.setAdapter(spinnerAadapter);

       spinner.setOnItemClickListener(new AdapterView.OnItemSelectedListener(){

            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                 Log.d(TAG,"@@@setOnItemClickListener position:"+position);
            }

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

            }
        });

    }

    @Override
    public void onSearchStateChanged(boolean enabled) {

    }

    @Override
    public void onSearchConfirmed(CharSequence text) {

    }

    @Override
    public void onButtonClicked(int buttonCode) {

    }
}
公共类MainActivity扩展AppCompative实现MaterialSearchBar.OnSearchActionListener{
纺纱机;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
微调器=(微调器)findViewById(R.id.sort\u微调器);
public class MainActivity extends AppCompatActivity implements MaterialSearchBar.OnSearchActionListener{

    Spinner spinner;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        spinner = (Spinner) findViewById(R.id.sort_spinner);
        ArrayAdapter<CharSequence> spinnerAadapter = ArrayAdapter.createFromResource(this,
                R.array.sort_array, android.R.layout.simple_spinner_item);
        spinnerAadapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner.setAdapter(spinnerAadapter);
        spinner.setOnItemClickListener((AdapterView.OnItemClickListener) new spinner_class());
     }

    @Override
    public void onSearchStateChanged(boolean enabled) {

    }

    @Override
    public void onSearchConfirmed(CharSequence text) {

    }

    @Override
    public void onButtonClicked(int buttonCode) {

    }
    public class spinner_class implements AdapterView.OnItemSelectedListener{

        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {

        }

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

        }
    }
}
public class MainActivity extends AppCompatActivity implements MaterialSearchBar.OnSearchActionListener {

    Spinner spinner;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        spinner = (Spinner) findViewById(R.id.sort_spinner);
        ArrayAdapter<CharSequence> spinnerAadapter = ArrayAdapter.createFromResource(this,
                R.array.sort_array, android.R.layout.simple_spinner_item);
        spinnerAadapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner.setAdapter(spinnerAadapter);

       spinner.setOnItemClickListener(new AdapterView.OnItemSelectedListener(){

            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                 Log.d(TAG,"@@@setOnItemClickListener position:"+position);
            }

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

            }
        });

    }

    @Override
    public void onSearchStateChanged(boolean enabled) {

    }

    @Override
    public void onSearchConfirmed(CharSequence text) {

    }

    @Override
    public void onButtonClicked(int buttonCode) {

    }
}