在活动之间传递微调器选择

Passing spinner selection between activities

我有 4 个 activity 每个 activity 里面都有旋转器,这个旋转器包括 3 个 字符串数据(下拉选择),当我从 activity 传递到另一个时,我必须将这个选定的数据传递到微调器中,就像我从微调器的列表中选择数据 x 并单击按钮一样,所选数据必须也作为 x 在第二个 activity 微调器中。 我看了几个解决方案都没有解决。我希望在这里解决它,这是我的微调器代码以及放置意图代码的位置

public class Page1 extends AppCompatActivity {
    Spinner spinner;
    ArrayAdapter adapter;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_page1); 

    spinner = (Spinner)findViewById(R.id.spinner);
    adapter =   ArrayAdapter.createFromResource(this,R.array.film_type,android.R.layout.simple_spinner_item);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_item);
    spinner.setAdapter(adapter);
    spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {

            Toast.makeText(getBaseContext(), parent.getItemAtPosition(position) + " selected", Toast.LENGTH_LONG).show();

            switch (position)
            {case 0:
                btn[0] = (FloatingTextButton) findViewById(R.id.btn);
                btn[0].setOnClickListener(new View.OnClickListener() {
                    public void onClick(View v) {
                        try {
                            double thick = Double.valueOf(editText1.getText().toString());
                            double width = Double.valueOf(editText2.getText().toString());
                    }
                });
                break;
                case 1:
                    btn[0] = (FloatingTextButton) findViewById(R.id.btn);
                    btn[0].setOnClickListener(new View.OnClickListener() {
                        public void onClick(View v) {
                            try {

                            } catch (NumberFormatException e) {
                                //not a double
                            }
                        }
                    });
                    break;
            }
        }
    @Override
    public void onNothingSelected(AdapterView<?> adapterView) {
    }
});

你可以这样做

String selectedItem=spinner1.getSelectedItem().toString();

而且 String 你可以使用 Intent

这是我能想到的最无痛的方法: 创建一个新的 class 或现有 class 的静态成员,但第二种解决方案使代码更难理解。

public class SpinnerPosHolder{
    public static int poition;
}

然后在所有 4 个中:

spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
SpinnerPosHolder.position = spinner.getSelectedItemPosition();

使用方法:

spinner.setSelection(SpinnerPosHolder.position)

首先将微调器中选定数据的位置保存在一个字符串变量中,

int positionOfSelectedDataFromSpinner;

spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
       positionOfSelectedDataFromSpinner= position;
}

然后在 button 上单击将意图发送给另一个 activity 和 putExtra

Intent i = new Intent (this, activity2.class);

i.putExtra("position", positionOfSelectedDataFromSpinner);
startActivity(i);

从另一个 activity

中的 getIntent 获取整数
Intent intent = getIntent();
int positionToShowToSpinner = intent.getStringExtra("position");

然后将位置设置为旋转器

spinner.setSelection(positionToShowToSpinner);

我想这可以解决你的问题。