获取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.