获取Android中微调器的位置
我正在尝试获取微调器的位置(编号),当选择它用于另一个活动时,该活动将根据所选项目每次显示不同的贴图。当我运行应用程序时,它崩溃了。这是第一个活动代码:获取Android中微调器的位置,android,android-spinner,Android,Android Spinner,我正在尝试获取微调器的位置(编号),当选择它用于另一个活动时,该活动将根据所选项目每次显示不同的贴图。当我运行应用程序时,它崩溃了。这是第一个活动代码: public class TestProjectActivity extends Activity { public Spinner spinner1; public Integer number; private Button valideButton; public void onCreate(Bundle
public class TestProjectActivity extends Activity {
public Spinner spinner1;
public Integer number;
private Button valideButton;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
MySpinner();
valide_button();
}
public void MySpinner() {
final Spinner spinner1 = (Spinner) findViewById(R.id.spinner1);
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
this, R.array.num, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner1.setAdapter(adapter);
spinner1.setOnItemSelectedListener(new OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> parentView,
View selectedItemView, int position, long id) {
// Object item = parentView.getItemAtPosition(position);
TestProjectActivity.this.number = spinner1
.getSelectedItemPosition() + 1;
}
public void onNothingSelected(AdapterView<?> arg0) {// do nothing
}
});
}
public void valide_button() {
valideButton = (Button) findViewById(R.id.valide_button);
valideButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent(TestProjectActivity.this,
MetroMapActivity.class);
startActivity(intent);
}
});
}
}
公共类TestProjectActivity扩展活动{
公共纺纱机纺纱机1;
公共整数;
私人按钮;
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
MySpinner();
valide_按钮();
}
public void MySpinner(){
最终喷丝器喷丝器1=(喷丝器)findViewById(R.id.spinner1);
ArrayAdapter=ArrayAdapter.createFromResource(
这个,R.array.num,android.R.layout.simple\u微调器\u项);
setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
喷丝头1.设置适配器(适配器);
spinner1.setOnItemSelectedListener(新的OnItemSelectedListener(){
已选择公共视图(AdapterView父视图,
视图选择编辑视图,整数位置,长id){
//对象项=父视图。getItemAtPosition(位置);
TestProjectActivity.this.number=喷丝头1
.getSelectedItemPosition()+1;
}
public void on nothingselected(AdapterView arg0){//不执行任何操作
}
});
}
公共无效valide_按钮(){
valideButton=(按钮)findViewById(R.id.valide_按钮);
valideButton.setOnClickListener(新视图.OnClickListener(){
公共void onClick(视图v){
意向意向=新意向(TestProjectActivity.this,
MetroMapActivity.class);
星触觉(意向);
}
});
}
}
获取微调器选择的方法是:
spinner1.getSelectedItemPosition();
文件参考:
但是,在代码中,引用它的位置是在setOnItemSelectedListener()
中。无需轮询微调器,因为onItemSelected
方法将位置作为“position”变量传递
因此,您可以将该行更改为:
TestProjectActivity.this.number = position + 1;
如果这不能解决问题,请发布应用程序崩溃时生成的错误消息。final int[]positions=new int[2];
final int[] positions=new int[2];
Spinner sp=findViewByID(R.id.spinner);
sp.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
// TODO Auto-generated method stub
Toast.makeText( arg2....);
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
});
微调器sp=findViewByID(R.id.Spinner);
sp.setOnItemSelectedListener(新的AdapterView.OnItemSelectedListener(){
@凌驾
已选择公共视图(AdapterView arg0、视图arg1、,
整数arg2,长arg3){
//TODO自动生成的方法存根
Toast.makeText(arg2….);
}
@凌驾
未选择公共无效(AdapterView arg0){
//TODO自动生成的方法存根
}
});
此代码应选中这两个复选框。它有问题吗?
创建时受保护的void(Bundle savedInstanceState){
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bt = findViewById(R.id.button);
spinner = findViewById(R.id.sp_item);
setInfo();
spinnerAdapter = new SpinnerAdapter(this, arrayList);
spinner.setAdapter(spinnerAdapter);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
//first, we have to retrieve the item position as a string
// then, we can change string value into integer
String item_position = String.valueOf(position);
int positonInt = Integer.valueOf(item_position);
Toast.makeText(MainActivity.this, "value is "+ positonInt, Toast.LENGTH_SHORT).show();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
note: the position of items is counted from 0.
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bt=findViewById(R.id.按钮);
微调器=findViewById(R.id.sp_项);
setInfo();
spinnerAdapter=新的spinnerAdapter(此,arrayList);
spinner.setAdapter(spinnerAdapter);
spinner.setOnItemSelectedListener(新的AdapterView.OnItemSelectedListener(){
@凌驾
已选择公共视图(AdapterView父视图、视图视图、整型位置、长id){
//首先,我们必须以字符串形式检索项目位置
//然后,我们可以将字符串值更改为整数
String item_position=String.valueOf(position);
int PositionInt=整数。值(项目位置);
Toast.makeText(MainActivity.this,“值为”+positionnt,Toast.LENGTH_SHORT).show();
}
@凌驾
未选择公共无效(AdapterView父级){
}
});
注意:项目的位置从0开始计算。
已经在代码中,但当我尝试在另一个活动中使用“number”时,它会突然移动“number”进入应用程序类。活动变量最好留在活动中。或者,尝试将数字设置为静态成员。阅读此处:Briliant!我创建了一个应用程序类,它将保存我将在两个活动之间共享的数据。干杯。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bt = findViewById(R.id.button);
spinner = findViewById(R.id.sp_item);
setInfo();
spinnerAdapter = new SpinnerAdapter(this, arrayList);
spinner.setAdapter(spinnerAdapter);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
//first, we have to retrieve the item position as a string
// then, we can change string value into integer
String item_position = String.valueOf(position);
int positonInt = Integer.valueOf(item_position);
Toast.makeText(MainActivity.this, "value is "+ positonInt, Toast.LENGTH_SHORT).show();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
note: the position of items is counted from 0.