2012-01-29 66 views
0

我想使用微调器中的“值”。从微调器中提取值并将其用于计算 - NullPointerException

当用户做出选择我想要使用该值来做一些计算。

我的问题是:

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. 
      } 
     } 

谢谢!

+0

试过spinner.getSelectedItem()?? – 2012-01-29 18:21:38

+0

问题是如何使用我在MyOnItemSelectedListener中创建的项目对象。 – George 2012-01-29 18:29:30

+0

int或字符串?..你可以使用toString()作为字符串或使用Integer.parseInt smthn那样 – 2012-01-29 18:30:54

回答

1

现在,您所做的只是为对象项分配微调器中所选项目的值。您无法在任何可以访问的位置保存该值。

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

例如: 如果你想获得所选项目的位置,添加private int position;public int getPosition() {return position;}作为监听器类的字段和方法(分别),并在onItemSelected方法position = pos;保存价值。如果你想要的话,保存对象是一个类似的想法。在您的应用程序中,如果列表中的第一项是选定项目,则listenerName.getPosition() == 0将为真,因此您可以使用它执行逻辑。

+0

:我试过了。我把spinner类放在“public int position”然后在“onItemSelected”我把“position = pos“。然后,在我的cores_func中,我做了”if(spinner.position == 0)“,但它说”无法解析或不是字段“ – George 2012-01-29 19:23:41

+0

:现在它给了我”getPosition()方法未定义为Spinner类型“。谢谢! – George 2012-01-29 19:33:49

+0

你把它叫做你的听众,而不是你的微调。抱歉,是我的错。 – AJcodez 2012-01-29 19:48:19

相关问题