Android 将微调器值发送到内部类外部的字符串变量

Android 将微调器值发送到内部类外部的字符串变量,android,android-studio,spinner,android-spinner,Android,Android Studio,Spinner,Android Spinner,我试图将微调器数组中选择的值项传递给API调用请求 我无法从setOnItemSelectedListener(新AdapterView.OnItemSelectedListener()外部获取值 我尝试使用堆栈溢出答案中提供的大多数选项,但当我尝试打印字符串时,它显示为null 获取外部字符串变量的正确方法是什么,以便我可以通过请求将其作为值发送,甚至打印它 public class Profile2 extends AppCompatActivity implements View.

我试图将微调器数组中选择的值项传递给API调用请求

我无法从setOnItemSelectedListener(新AdapterView.OnItemSelectedListener()外部获取值

我尝试使用堆栈溢出答案中提供的大多数选项,但当我尝试打印字符串时,它显示为null

获取外部字符串变量的正确方法是什么,以便我可以通过请求将其作为值发送,甚至打印它

    public class Profile2 extends AppCompatActivity implements View.OnClickListener  {

private String gender;

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

    //final String gender = (String) genderspinner.getSelectedItem().toString().trim();

    // Spinner gender = (Spinner) findViewById(R.id.genderspinner);
    //final EditText etGender = (EditText) findViewById(R.id.etGender);
    final Spinner genderspinner = findViewById(R.id.genderspinner);
    //String gender;
    ArrayAdapter<CharSequence> arrayAdapter = ArrayAdapter.createFromResource(this,R.array.gender, R.layout.support_simple_spinner_dropdown_item);
    arrayAdapter.setDropDownViewResource(R.layout.support_simple_spinner_dropdown_item);
    genderspinner.setAdapter(arrayAdapter);
    genderspinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {

            String gendervalue = parent.getItemAtPosition(position).toString();
    //       Object item = parent.getItemAtPosition(position);
        }

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

        }
    });

   final String gender = String.valueOf(genderspinner.getSelectedItem());

    Log.i("TAG", "gender here : "+gender);

    // when I run the log, it is always empty. 

    //final String gender = String.valueOf(genderspinner.getSelectedItem());
   // genderspinner.setOnItemSelectedListener(this);

updateprofile(gender)

    });
}

private void updateprofile(gender) {

   // API call which sends the gender data
}
}
public class Profile2扩展了AppCompatActivity实现了View.OnClickListener{
私人字符串性别;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
//最终字符串性别=(字符串)genderspinner.getSelectedItem().toString().trim();
//微调器性别=(微调器)findViewById(R.id.genderspinner);
//最终编辑文本etGender=(编辑文本)findViewById(R.id.etGender);
最终微调器genderspinner=findViewById(R.id.genderspinner);
//字符串性别;
ArrayAdapter ArrayAdapter=ArrayAdapter.createFromResource(这个,R.array.gender,R.layout.support\u simple\u spinner\u dropdown\u项);
arrayAdapter.setDropDownViewResource(R.layout.support_simple_spinner_dropdown_item);
setAdapter(arrayAdapter);
genderspinner.setOnItemSelectedListener(新的AdapterView.OnItemSelectedListener(){
@凌驾
已选择公共视图(AdapterView父视图、视图视图、整型位置、长id){
字符串gendervalue=parent.getItemAtPosition(position.toString();
//Object item=parent.getItemAtPosition(位置);
}
@凌驾
未选择公共无效(AdapterView父级){
}
});
final String gender=String.valueOf(genderspinner.getSelectedItem());
Log.i(“标签”,“此处性别:”+性别);
//当我运行日志时,它总是空的。
//final String gender=String.valueOf(genderspinner.getSelectedItem());
//genderspinner.SetonimSelectedListener(此);
更新配置文件(性别)
});
}
私有无效更新配置文件(性别){
//发送性别数据的API调用
}
}

声明一个
全局变量
以存储
微调器的选定值
。试试下面的代码

String gendervalue="";
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    //final String gender = (String) genderspinner.getSelectedItem().toString().trim();

    // Spinner gender = (Spinner) findViewById(R.id.genderspinner);
    //final EditText etGender = (EditText) findViewById(R.id.etGender);
    final Spinner genderspinner = findViewById(R.id.genderspinner);
    //String gender;
    ArrayAdapter<CharSequence> arrayAdapter = ArrayAdapter.createFromResource(this,R.array.gender, R.layout.support_simple_spinner_dropdown_item);
    arrayAdapter.setDropDownViewResource(R.layout.support_simple_spinner_dropdown_item);
    genderspinner.setAdapter(arrayAdapter);
    genderspinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {

            gendervalue = parent.getItemAtPosition(position).toString();
    //       Object item = parent.getItemAtPosition(position);
        }

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

        }
    });


    Log.i("TAG", "gender here : "+gendervalue);


updateprofile(gendervalue)

    });
}
String gendervalue=“”;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
//最终字符串性别=(字符串)genderspinner.getSelectedItem().toString().trim();
//微调器性别=(微调器)findViewById(R.id.genderspinner);
//最终编辑文本etGender=(编辑文本)findViewById(R.id.etGender);
最终微调器genderspinner=findViewById(R.id.genderspinner);
//字符串性别;
ArrayAdapter ArrayAdapter=ArrayAdapter.createFromResource(这个,R.array.gender,R.layout.support\u simple\u spinner\u dropdown\u项);
arrayAdapter.setDropDownViewResource(R.layout.support_simple_spinner_dropdown_item);
setAdapter(arrayAdapter);
genderspinner.setOnItemSelectedListener(新的AdapterView.OnItemSelectedListener(){
@凌驾
已选择公共视图(AdapterView父视图、视图视图、整型位置、长id){
gendervalue=parent.getItemAtPosition(position.toString();
//Object item=parent.getItemAtPosition(位置);
}
@凌驾
未选择公共无效(AdapterView父级){
}
});
Log.i(“标记”,“此处的性别:”+gendervalue);
更新配置文件(gendervalue)
});
}

您现在可以检查日志,它将显示所选值。

声明一个
全局变量
以存储
微调器的所选值
。试试下面的代码

String gendervalue="";
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    //final String gender = (String) genderspinner.getSelectedItem().toString().trim();

    // Spinner gender = (Spinner) findViewById(R.id.genderspinner);
    //final EditText etGender = (EditText) findViewById(R.id.etGender);
    final Spinner genderspinner = findViewById(R.id.genderspinner);
    //String gender;
    ArrayAdapter<CharSequence> arrayAdapter = ArrayAdapter.createFromResource(this,R.array.gender, R.layout.support_simple_spinner_dropdown_item);
    arrayAdapter.setDropDownViewResource(R.layout.support_simple_spinner_dropdown_item);
    genderspinner.setAdapter(arrayAdapter);
    genderspinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {

            gendervalue = parent.getItemAtPosition(position).toString();
    //       Object item = parent.getItemAtPosition(position);
        }

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

        }
    });


    Log.i("TAG", "gender here : "+gendervalue);


updateprofile(gendervalue)

    });
}
String gendervalue=“”;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
//最终字符串性别=(字符串)genderspinner.getSelectedItem().toString().trim();
//微调器性别=(微调器)findViewById(R.id.genderspinner);
//最终编辑文本etGender=(编辑文本)findViewById(R.id.etGender);
最终微调器genderspinner=findViewById(R.id.genderspinner);
//字符串性别;
ArrayAdapter ArrayAdapter=ArrayAdapter.createFromResource(这个,R.array.gender,R.layout.support\u simple\u spinner\u dropdown\u项);
arrayAdapter.setDropDownViewResource(R.layout.support_simple_spinner_dropdown_item);
setAdapter(arrayAdapter);
genderspinner.setOnItemSelectedListener(新的AdapterView.OnItemSelectedListener(){
@凌驾
已选择公共视图(AdapterView父视图、视图视图、整型位置、长id){
gendervalue=parent.getItemAtPosition(position.toString();
//Object item=parent.getItemAtPosition(位置);
}
@凌驾
未选择公共无效(AdapterView父级){
}
});
Log.i(“标记”,“此处的性别:”+gendervalue);
更新配置文件(gendervalue)
});
}

您现在可以查看日志,它将显示所选的值。

创建全局变量并在该变量中设置值,然后访问所需的位置。

创建全局变量并在该变量中设置值,然后访问所需的位置。

请尝试下面的答案谢谢。成功了。我真傻,竟然错过了声明全局变量的单一逻辑。再次感谢你@雷霆和安什·卡里亚特里,我的回答如下,谢谢你。成功了。我真傻,竟然错过了声明全局变量的单一逻辑。再次感谢你@雷霆与安什·卡雷利亚