将 Spinner 值发送到内部 class 外部的 String 变量
Sending Spinner value to String variable outside the inner class
我正在尝试将在 Spinner 数组中选择的值项传递给 API 调用请求。
我无法获取 setOnItemSelectedListener(new AdapterView.OnItemSelectedListener().
之外的值
我尝试使用堆栈溢出答案中提供的大部分选项,但是当我尝试打印字符串时,它显示为空。
从外部获取字符串变量的正确方法是什么,以便我可以通过请求将其作为值发送,甚至打印它。
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
}
}
声明一个 global variable
来存储 spinner's selected value
。试试下面的代码。
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)
});
}
您现在可以查看日志,它会显示您选择的值。
创建全局变量并在该变量中设置值并访问所需位置。
我正在尝试将在 Spinner 数组中选择的值项传递给 API 调用请求。
我无法获取 setOnItemSelectedListener(new AdapterView.OnItemSelectedListener().
之外的值我尝试使用堆栈溢出答案中提供的大部分选项,但是当我尝试打印字符串时,它显示为空。
从外部获取字符串变量的正确方法是什么,以便我可以通过请求将其作为值发送,甚至打印它。
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
}
}
声明一个 global variable
来存储 spinner's selected value
。试试下面的代码。
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)
});
}
您现在可以查看日志,它会显示您选择的值。
创建全局变量并在该变量中设置值并访问所需位置。