Android 将微调器值发送到内部类外部的字符串变量
我试图将微调器数组中选择的值项传递给API调用请求 我无法从setOnItemSelectedListener(新AdapterView.OnItemSelectedListener()外部获取值 我尝试使用堆栈溢出答案中提供的大多数选项,但当我尝试打印字符串时,它显示为null 获取外部字符串变量的正确方法是什么,以便我可以通过请求将其作为值发送,甚至打印它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.
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)
});
}
您现在可以查看日志,它将显示所选的值。创建全局变量并在该变量中设置值,然后访问所需的位置。创建全局变量并在该变量中设置值,然后访问所需的位置。请尝试下面的答案谢谢。成功了。我真傻,竟然错过了声明全局变量的单一逻辑。再次感谢你@雷霆和安什·卡里亚特里,我的回答如下,谢谢你。成功了。我真傻,竟然错过了声明全局变量的单一逻辑。再次感谢你@雷霆与安什·卡雷利亚