Android 从McClickListener中获取数据

Android 从McClickListener中获取数据,android,android-spinner,android-adapter,Android,Android Spinner,Android Adapter,我试图从Android Studio中的这个微调器中获取OnClickListener函数的数据。 这是一段代码 roleAdapter = ArrayAdapter.createFromResource(this,R.array.role, android.R.layout.simple_spinner_item); roleAdapter.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line); roleSpi

我试图从Android Studio中的这个微调器中获取OnClickListener函数的数据。 这是一段代码

roleAdapter = ArrayAdapter.createFromResource(this,R.array.role, android.R.layout.simple_spinner_item);
roleAdapter.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line);
roleSpinner.setAdapter(roleAdapter);

roleSpinner.setOnItemClickListener(new AdapterView.OnItemClickListener() {

@Override

public void onItemClick(AdapterView<?> parent, View view, int ?>position, 
long id) {
String roleText = parent.getItemAtPosition(position).toString();       
}
});
roleAdapter=ArrayAdapter.createFromResource(这个,R.array.role,android.R.layout.simple\u微调器\u项);
roleAdapter.setDropDownViewResource(android.R.layout.simple\u dropdown\u item\u 1line);
roleSpinner.setAdapter(roleAdapter);
roleSpinner.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
公共单击(AdapterView父视图、视图、int?>位置、,
长id){
字符串roleText=parent.getItemAtPosition(position.toString();
}
});
我有一个“下一步按钮”可以继续下一个活动,但我想检查以确保用户在继续下一个活动之前已从该微调器中选择了一个项目,否则会创建一条Toast消息,说请从该微调器中选择一个项目

或者我只是不需要使用适配器。。。我不知道。

试着用这个:

使用
setOnitemSelectedListener
而不是
setOnItemClickListener

 roleSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override

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

           String roleText = String.valueOf(roleSpinner.getSelectedItem());
        }
roleSpinner.setOnItemSelectedListener(新的AdapterView.OnItemSelectedListener(){
@凌驾
已选择公共视图(AdapterView父视图、视图视图、整型位置、长id){
String roleText=String.valueOf(roleSpinner.getSelectedItem());
}
尝试使用以下方法:

使用
setOnitemSelectedListener
而不是
setOnItemClickListener

 roleSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override

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

           String roleText = String.valueOf(roleSpinner.getSelectedItem());
        }
roleSpinner.setOnItemSelectedListener(新的AdapterView.OnItemSelectedListener(){
@凌驾
已选择公共视图(AdapterView父视图、视图视图、整型位置、长id){
String roleText=String.valueOf(roleSpinner.getSelectedItem());
}

您可以像这样在活动中设置类成员变量

private String roleText;
然后在
onItemSelectedListener
中,将该变量设置为用户选择的任何变量

roleSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
       roleText = String.valueOf(roleSpinner.getSelectedItem());
    }
};

您可以像这样在活动中设置类成员变量

private String roleText;
然后在
onItemSelectedListener
中,将该变量设置为用户选择的任何变量

roleSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
       roleText = String.valueOf(roleSpinner.getSelectedItem());
    }
};

Spinner具有名为Spinner.getSelectedItem()的方法来获取Spinner的选定项。通过使用该方法,您可以检查是否选中了Spinner项,如以下代码所述

if(spinner != null && spinner.getSelectedItem() !=null ) {
    //one of the spinner items is selected. Do whatever you want.
} else  { 

}

Spinner具有名为Spinner.getSelectedItem()的方法来获取Spinner的选定项。通过使用该方法,您可以检查是否选中了Spinner项,如以下代码所述

if(spinner != null && spinner.getSelectedItem() !=null ) {
    //one of the spinner items is selected. Do whatever you want.
} else  { 

}

与其检查字符串是否为空(您还应该检查null),我将禁用按钮,直到选择适配器项(或同时执行这两项)为止。我将保持原样,因为OP特别要求显示toast,但禁用它可能会更好(只要用户不会对为什么禁用按钮感到困惑)。与其检查字符串是否为空(您还应检查是否为空),我将禁用按钮,直到选择适配器项(或同时执行这两项)为止。我将保持原样,因为OP特别要求显示toast,但禁用它可能更好(只要用户不会对禁用按钮的原因感到困惑)。是的,尝试过。仍然无法根据微调器的状态进行测试。是的,尝试过。仍然无法根据微调器的状态进行测试。这是“getSelectedItem()和实际对象吗?我可以将其传递给另一个函数吗?是的getSelectedItem()返回一个对象。如果需要,可以将其强制转换为字符串。这是“getSelectedItem()”吗对象?比如我可以把它传递给另一个函数吗?是的,getSelectedItem()返回一个对象。如果需要,可以将它转换为字符串。