从微调器中提取值并将其用于计算 - NullPointerException

时间:2012-01-29 18:14:49

标签: java android

我想使用微调器中的“值”。

当用户做出选择时,我想使用该值进行一些计算。

我的问题是:

1)如何正确获取值(项目)。我正在使用类似“item.MyOnItemSelectedListener == 0”。

2)该值应该是什么?例如,上面我有== 0.这意味着从微调器列表中的第一个选择?

代码:

public class number_cores extends Activity implements OnClickListener {
    ..
    final Spinner spinner = (Spinner) findViewById(R.id.spinner);

        ...
  public void onCreate(Bundle savedInstanceState) {
 ....


 //spinner-drop_list
        ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
                this, R.array.init_or_final, android.R.layout.simple_spinner_item);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner.setAdapter(adapter);
        spinner.setOnItemSelectedListener(new MyOnItemSelectedListener());
    }
...
public void cores_func(){
           ...
             double fcores=0;

             MyOnItemSelectedListener obj=new MyOnItemSelectedListener();

         if ( obj.getPosition()==0) fcores=initcores*Math.exp(-l*ttime);
         else if (obj.getPosition()==1) fcores=initcores/Math.exp(-l*ttime);

..}

 //spinner class

        public class MyOnItemSelectedListener implements OnItemSelectedListener {

            private int position;
        public int getPosition() {return position;}

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

            }

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

谢谢!

1 个答案:

答案 0 :(得分:1)

现在你要做的就是在微调器中为Object项分配所选项的值。您无法在可以访问它的任何位置保存该值。

要解决此问题,请在OnItemSelectedListener中保存字段中的选定值或位置。通过侦听器中的getter方法访问它,返回值。在onItemSelected方法中,每次用户更改微调器的值时都会设置该值。在Activity中,通过getter方法通过侦听器访问保存的值。

实施例: 如果要获取所选项的位置,请在侦听器类中添加private int position;public int getPosition() {return position;}作为字段和方法,并在onItemSelected方法position = pos;中添加listenerName.getPosition() == 0以保存值。如果你想要保存对象,这是一个类似的想法。在您的应用程序中,如果列表中的第一件事是所选项目,{{1}}将成立,因此您可以使用它来执行逻辑。