【问题标题】:pass a selected value in a spinner array to another class Android将微调器数组中的选定值传递给另一个 Android 类
【发布时间】:2015-08-19 17:57:44
【问题描述】:

我正在构建一个具有自毁图像的应用程序,并且我正在尝试将从微调器中选择的值传递给另一个类

final String titles[] = {"1 Second","2 Seconds", "3 Seconds","4 Seconds","5 Seconds","6 Seconds","7 Seconds", "8 seconds, "9 seconds", 10 seconds};
    mSeconds = (Spinner) view.findViewById(R.id.secondsSpinner);
    ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_spinner_item, titles);
    arrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

mSeconds.setAdapter(arrayAdapter);
mSeconds.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
    @Override
    public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
        int secondsToUse = position + 1;
    }

    @Override
    public void onNothingSelected(AdapterView<?> parentView) {
        // do nothing
    }

});

我的意图方法:

Intent recipientsIntent = new Intent(getActivity(), RecipientsActivity.class);
 recipientsIntent.putExtra("key1", titles);
                      startActivity(recipientsIntent);

如何将选定的值传递给另一个类?我的方法传递整个数组而不是选定的项目。

【问题讨论】:

标签: java android arrays android-intent spinner


【解决方案1】:
Spinner.getSelectedItem();

将为您提供所选项目。

Intent recipientsIntent = new Intent(getActivity(), RecipientsActivity.class);
                recipientsIntent.putExtra("spinnerItem", Spinner.getSelectedItem());
                startActivity(recipientsIntent);

如果你需要这个 lmk 背后的额外逻辑。Spinner.getSelectedItem() 也会返回一个对象。您需要将其转换为您期望的任何内容。例如一个字符串...Spinner.getSelectedItem().toString()

在意图中传递一个 int:

Intent recipientsIntent = new Intent(getActivity(), RecipientsActivity.class);
recipientsIntent.putExtra("YOUR_INT_KEY", secondsToUse);
startActivity(recipientsIntent);

您的 int 不符合您的意图的原因是它是 onItemSelected() 函数的局部变量。使其成为成员变量或将其放在onItemSelected之外

【讨论】:

  • 我在哪里添加 Spinner.getSelectedItem().toString() 在我的 onItemSelect 方法中
  • 您可以将该代码放在 onItemSelect 接口方法之外。如果您打算立即使用所选值执行某些操作,您可能希望将内容放入 onItemSelect 方法中。或者,如果您打算存储稍后使用的值。如果我知道您要对所选项目做什么 指导您会更容易哈哈
  • 是的,谢谢,我会把它放在一个计时器里,所以我想把选择的值带到另一个类,上传它来解析,然后把它放回另一个类,把它放进一个计时器中
  • 所以在 onItemSelected 参数之一返回一个我相信的视图。或者一个对象值/位置。使用该值并通过意图将其传递给您的其他类。如果使用位置,您可以从用于填充 Spinner 的数组中获取所需对象的值。然后用它做你想做的事!如果您需要更多帮助,请联系我。否则,如果我的回答有助于解决您的问题,您能否将其标记为已接受的答案?谢谢!
  • 请看我上面编辑的问题我会把你的答案放在哪里Spinner.getSelectedItem().toString()
【解决方案2】:
final String titles[] = {"1 Second","2 Seconds", "3 Seconds","4 Seconds","5 Seconds","6 Seconds","7 Seconds", "8 seconds, "9 seconds", 10 seconds};  
Bundle b=new Bundle();
b.putStringArray(key, titles);
Intent i=new Intent(context, Class);
i.putExtras(b);
startActivity(i);

为了阅读:

Bundle b=this.getIntent().getExtras();
String[] array=b.getStringArray(key);

【讨论】:

  • 我想将选定的数字从数组传递给另一个类
【解决方案3】:

这是关闭工作的代码

发送:

Intent intentS=new Intent(getActivity(), Main_ExerciseLibrary_Overview_Activity.class);
                    intentS.putExtra("yourInt",Value);
                    startActivity(intentS);

接收:

Bundle b = getIntent().getExtras();
    int myint = b.getInt("yourInt");

【讨论】:

  • 我想从数组中获取选定的数字以传递给另一个类
  • 不,我没有在 secondsToUse 内通过,但它不起作用
  • 等待你传递的是 int 还是 string?
  • 我有一个字符串数组,但我传递了一个 int 位置,我声明了 secondsToUse 和一个全局变量,现在已经通过了
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-24
相关资源
最近更新 更多