0

我的微调器有问题,它没有显示任何内容,并且出现错误。请检查以下代码:

    private void createSpinnerValues(){

    spinnerValues = new HashMap<String, Double>();
    spinnerValues.put( "Sedentary", 1.2 );
    spinnerValues.put( "Lightly Active", 1.375 );
    spinnerValues.put( "Moderately Active", 1.55 );
    spinnerValues.put( "Heavily Active", 1.725 );

} // end of createSpinnerValue   

private Double getAnswer(String age, String in, String ft, String weight, Double selectedItemValueFromSpinner) {

    double answer = ( ( 66 + ( 6.2377 * Double.parseDouble( weight ) ) + 
            ( 12.7084 * ( Double.parseDouble( in ) * 12 + Double.parseDouble( ft ) ) ) 
            - ( 6.8 * Double.parseDouble( age ) ) ) * selectedItemValueFromSpinner ); 
    return answer;

} // end of getAnswer method

private Double getSelectedItemValueFromSpinnerText( String spinnerText ) { 

    Double val = spinnerValues.get(  spinnerText ); 
    if( val==null ){ 
        Log.i( "DEMO", "Value is null" ); } 
    return val; 

} 


        private void calculateWomen(){

    String f1a = etft.getText().toString();
    String f2a = etin.getText().toString();
    String f3a = etweight.getText().toString();
    String f4a = etage.getText().toString();

    if ( ( f1a.isEmpty() || f2a.isEmpty() || f3a.isEmpty() || f4a.isEmpty() ) ) 
        // call for custom toast
        viewErrorToast();
    else{
    // Metric Formula for BMR (Women) English Unit
    //655 + ( 4.3379 x weight in pounds ) + 
    //( 4.6980 x height in inches ) - ( 4.6756 x age in years )
     String age, in, ft, weight;
     Double answer;

     age =  etage.getText().toString();
     in =  etin.getText().toString();    
     ft = etft.getText().toString();
     weight = etweight.getText().toString();

     answer =  ( ( 665 + ( 4.3379 * Double.parseDouble( weight ) ) + 
             ( 4.6980 * ( Double.parseDouble( in ) ) * 12 + Double.parseDouble( ft ) )
             - ( 4.6756 * Double.parseDouble( age ) ) )  * 1.2);
     BigDecimal bd = BigDecimal.valueOf( answer );
     bd = bd.setScale( 2, BigDecimal.ROUND_FLOOR );
     etanswer.setText( bd.toString() );  


     // call for custom toast
     viewBMRSavedToast();
    }

} // end of calculateWomen method

请帮我找出我的问题,我是android编程的新手。任何帮助,将不胜感激。谢谢

4

1 回答 1

0

我假设您以稍微错误的方式使用微调器,有一个小例子。设置适配器和微调器 int pos =0; //类变量 List list = new ArrayList(); Spinner spin = (Spinner) findViewById(R.id.id); ArrayAdapter 适配器 = new ArrayAdapter(this, android.R.layout.simple_spinner_item, list); 适配器 .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinPriceFor.setAdapter(适配器);

填充列表(您可以在设置适配器之前填充它并跳过此步骤)

list.add(item);
runOnUiThread(new Runnable() {
            public void run() {
                adapterRegion.notifyDataSetChanged();
            }
        });

从微调器中获取所选元素

spinSettle.setOnItemSelectedListener(new OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view,
                    int position, long id) {
                pos=position;
String a = list.get(pos); //do what ever you want with selected item
            }

            @Override
            public void onNothingSelected(AdapterView<?> arg0) {
            }
        });

当您需要来自 spinnerValues 的第二个值时

spinnerValues.get(list.get(pos));
于 2013-07-17T14:07:56.657 回答