【问题标题】:Passing spinner selection between activities在活动之间传递微调器选择
【发布时间】:2018-02-26 05:51:53
【问题描述】:

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

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) {
    }
});

【问题讨论】:

    标签: java android android-spinner


    【解决方案1】:

    首先将spinner中选中数据的位置保存到一个String变量中,

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

    然后在button 上单击将意图发送到具有putExtra 的另一个活动

    Intent i = new Intent (this, activity2.class);
    
    i.putExtra("position", positionOfSelectedDataFromSpinner);
    startActivity(i);
    

    在另一个活动中从 getIntent 获取 int

    Intent intent = getIntent();
    int positionToShowToSpinner = intent.getStringExtra("position");
    

    然后将位置设置为微调器

    spinner.setSelection(positionToShowToSpinner);
    

    我认为这可以解决您的问题。

    【讨论】:

    • 你可以把Extra设为整数。 stackoverflow.com/questions/7074097/…
    • 感谢我对你的代码做了这样的事情:1-finalint[]positionOfSelectedDataFromSpinner = new int[1]; 2- positionOfSelectedDataFromSpinner[0] = 位置;并在第二个活动 3- Intent intent = getIntent(); int positionToShowToSpinner = intent.getIntExtra("position",0); 4- spinner.setSelection(positionToShowToSpinner);
    【解决方案2】:

    这是我能想到的最轻松的方式: 创建一个新类或现有类的静态成员,但第二种解决方案使代码难以理解。

    public class SpinnerPosHolder{
        public static int poition;
    }
    

    然后在所有 4 个中:

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

    为了使用它:

    spinner.setSelection(SpinnerPosHolder.position)
    

    【讨论】:

      【解决方案3】:

      你可以这样做

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

      你可以使用Intent传递String

      【讨论】:

      猜你喜欢
      • 2015-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-26
      • 1970-01-01
      • 2014-10-06
      • 2017-08-05
      • 2013-07-30
      相关资源
      最近更新 更多