【问题标题】:how to retrieve the selected value from spinner and use it in another class? - Android如何从微调器中检索选定的值并在另一个类中使用它? - 安卓
【发布时间】:2012-08-01 13:41:56
【问题描述】:

正如 jalopaba 在这里演示的那样,我已经创建了一个新类:How do you get the selected value of a Spinner?

public class MyItemSelectedListener implements OnItemSelectedListener {

    public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
        String selected = parent.getItemAtPosition(pos).toString();
    }

    public void onNothingSelected(AdapterView parent) {
        // Do nothing.
    }
}

并将其注册到原始类中的微调器:

spinner.setOnItemSelectedListener(new MyOnItemSelectedListener());

但是,我仍然不能使用该选定的字符串来填写我在同一个类中的代码:

textView.setText(selected);

反正我是这个 Android 的新手,所以这个问题对你们中的一些人来说可能太愚蠢了

【问题讨论】:

  • 初始化类外的字符串变量。在主类上面的 onCreate() 方法中初始化它。

标签: java android spinner


【解决方案1】:

在onItemSelected中添加setText代码:

public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
    yourTextView.setText(parent.getSelectedItem().toString);
}

【讨论】:

  • 这不行,我的 textView 没有在这个 MyItemSelectedListener 类中注册
  • 你有没有像yourTextView = (TextView) findViewById(&lt;textview id&gt;);一样初始化你的TextView??
  • 并确保TextView是全局的,在所有方法之外声明它并在onCreate中初始化。
  • 你给了我一个想法,我在每个可以修改 TextView 本身值的类中双重声明了 TextView,就像魔术一样!
  • 所以你的意思是说我无法在onItemSelected之外使用该字符串??我已经尝试过 deca;将字符串作为全局变量,但是一旦我尝试在其他方法中使用它,我就会得到一个 NPE。
【解决方案2】:

试试这个代码,希望对你有帮助。

final CharSequence[] array_min = {"No 

  Min","100","200","300","400", "500","600","700","800","900","1000",
                  "1100","1200","1300","1400","1500","1600","1700","1800","1900","2000","2500","3000","3500" };

        Spinner s = (Spinner) layout.findViewById(R.id.viewSpin);

        adapter = new ArrayAdapter(this,android.R.layout.simple_spinner_item, array_min);

        s.setAdapter(adapter);
        s.setOnItemSelectedListener(new OnItemSelectedListener() {

            public void onItemSelected(AdapterView<?> parent, View arg1,
                    int arg2, long arg3)
            {
                selItem = parent.getSelectedItem().toString();
            }

            public void onNothingSelected(AdapterView<?> arg0) {
                // TODO Auto-generated method stub
            }
        });

【讨论】:

    【解决方案3】:

    使用全局变量..在您的代码中进行以下更改

    字符串选择="";

    公共类 MyItemSelectedListener 实现 OnItemSelectedListener {

    public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
        selected = parent.getItemAtPosition(pos).toString();
    }
    
    public void onNothingSelected(AdapterView parent) {
        // Do nothing.
    }
    

    }

    textView.setText(选中);

    【讨论】:

    • 这不起作用,我的 textView 现在包含 "" 值,无论微调器的选定值是什么
    【解决方案4】:

    注册 spinner 后,您可以通过 getSelectedItem() 方法对任何操作如 ocClick() 获取所选项目

     regType = (Spinner) findViewById(R.id.spinner1);
        ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.regType, android.R.layout.simple_spinner_dropdown_item);
        regType.setAdapter(adapter);
    

    public void onClick(View v) { 开关 (v.getId()) { 案例R.id.btn保存:

            intent.putExtra("regtype",regType.getSelectedItem().toString());
            startActivity(intent);  
    
                break;}}
    

    【讨论】:

    • 我不喜欢点击任何按钮来获取值,我听说我们实际上可以像选择微调器一样快速检索值
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-05
    • 2023-03-06
    • 1970-01-01
    • 1970-01-01
    • 2016-08-17
    相关资源
    最近更新 更多