【问题标题】:How to pass data from a Spinner to other activity?如何将数据从 Spinner 传递到其他活动?
【发布时间】:2019-11-07 17:24:18
【问题描述】:

我正在开发一个包含在购物车上的应用程序,用户可以在其中选择他想要的比萨饼和饮料,每次选择都使用微调器。 我一直在研究如何将微调器中选择的数据发送到下一个活动并将其显示在文本视图上,但我不知道该怎么做。

我的两个微调器工作正常。

微调器代码

    Spinner spinner = findViewById(R.id.spinner1);
    ArrayAdapter<CharSequence> adapter = 
    ArrayAdapter.createFromResource(this,
    R.array.numbers, android.R.layout.simple_spinner_item);      
    adapter.setDropDownViewResource  
    (android.R.layout.simple_spinner_dropdown_item);
    spinner.setAdapter(adapter);
    spinner.setOnItemSelectedListener(this);

    Spinner spinner2 = findViewById(R.id.spinner2);
    ArrayAdapter<CharSequence> adapter1 = 
    ArrayAdapter.createFromResource(this,
    R.array.drinks, android.R.layout.simple_spinner_item);
    adapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinner2.setAdapter(adapter1);
    spinner2.setOnItemSelectedListener(this);



    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int 
    position, long l) {
    String text = parent.getItemAtPosition(position).toString();
    Toast.makeText(parent.getContext(), text, Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onNothingSelected(AdapterView<?> adapterView) {

    }

意图代码

    Button enviar = findViewById(R.id.enviar);
    enviar.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent resumenPedido = new Intent(MainActivity.this, Resumen.class);
            startActivityForResult(resumenPedido, 1);
        }
    });

【问题讨论】:

    标签: android android-intent android-activity


    【解决方案1】:

    你应该使用 Intent.putExtra() 方法。请检查以下内容并相应使用。

    这是从微调器中获取选定值的方法:

    CharSequence spinner1SelectedData  = (CharSequence) spinner.getSelectedItem();
    CharSequence spinner2SelectedData  = (CharSequence) spinner2.getSelectedItem();
    

    然后将 onClick 监听器替换为以下内容:

    Intent resumenPedido = new Intent(MainActivity.this, Resumen.class);
    resumePedido.putExtra("data_spinner_1", spinner1SelectedData.toString());  
    resumePedido.putExtra("data_spinner_2", spinner2SelectedData.toString());
    startActivity(mIntent);
    

    除非您想回​​调源活动,否则您不必使用 startActivityForResult。

    在第二个活动中,您可以获得如下数据:

      if (getIntent() != null){
          String spinner1Value = getIntent().getStringExtra("data_spinner_1");
          String spinner2Value = getIntent().getStringExtra("data_spinner_2");
      }
    

    【讨论】:

    • 它只是没有用,我检查了文档然后它工作了
    • 好的,这意味着您已经找到了解决问题的方法,对吧?
    • 请用解决方案更新您的代码,其他人可能会从中获得帮助
    【解决方案2】:

    首先

    您需要将微调器 1 onItemSelectedListner 与 微调器 2

    第二件事

    为了存储用户从微调器中选择的值,需要两个变量

    string_spinner1 和 string_spinner2 和 将其存储在onItemSelectedListner

    string_spinner1 = parent.getItemAtPosition(position).toString()  //FOR SPINNER 1 LISTENER
    string_spinner2 = parent.getItemAtPosition(position).toString() //FOR SPINNER 2 LISTENER
    

    Third Thing 像这样在你的意图中传递该值>

    Intent resumenPedido = new Intent(MainActivity.this, Resumen.class);
    resumenPedido.putExtra('spinner1_data',string_spinner1);
    resumenPedido.putExtra('spinner2_data',string_spinner2);
    startActivity(resumenPedido);
    

    【讨论】:

      【解决方案3】:

      使用EXTRA 表示意图
      你的onClick 应该是这样的

      public void onClick(View view) {
              Intent resumenPedido = new Intent(MainActivity.this, Resumen.class);
              resumePedido.putExtra(FLAG, data);  
              startActivityForResult(resumenPedido, 1);
          }
      

      在新的活动中使用方法

      data = getIntent().getExtras(FLAG);
      

      检查similar

      【讨论】:

      • 数据 = getIntent().getExtra(FLAG);这部分似乎不完整。没有任何方法 getIntent().getExtra() 方法。
      • 是的,我已经浏览了文档。没有这种方法。
      • 哦。非常抱歉))) data = getIntent().getExtras(FLAG);
      • 仍然不正确。应该是 data = getIntent().getExtras().get(FLAG);但没关系。请不要采取其他方式。快乐编码
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多