2010-01-25 3 views
0
import android.app.Activity; 
import android.os.Bundle; 
import android.view.KeyEvent; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.ArrayAdapter; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.Spinner; 
import android.widget.SpinnerAdapter; 
import android.widget.TextView; 

public class calctest extends Activity { 
/** Called when the activity is first created. */ 
private EditText input; 
private EditText input2; 
private EditText input3; 
private EditText input4; 
private TextView output; 
private TextView output2; 
private Spinner aperture; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

// Extract the text fields from the XML layout 
    input = (EditText) findViewById(R.id.input1); 
    input2 = (EditText) findViewById(R.id.input2); 
    input3 = (EditText) findViewById(R.id.input3); 
    input4 = (EditText) findViewById(R.id.input4); 
    output = (TextView) findViewById(R.id.result); 
    output2 = (TextView) findViewById(R.id.result2); 

    //aperture dropdown 
    final Spinner aperture = (Spinner) findViewById(R.id.apt); 
    ArrayAdapter adapter = ArrayAdapter.createFromResource(
    this, R.array.apertures, android.R.layout.simple_spinner_item); 
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    aperture.setAdapter(adapter); 

    Spinner mode = (Spinner) findViewById(R.id.mode); 
    ArrayAdapter adapter2 = ArrayAdapter.createFromResource(
    this, R.array.formats, android.R.layout.simple_spinner_item); 
    adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    mode.setAdapter(adapter2); 

    // Perform calculation when button is pushed 

    final Button button = (Button) findViewById(R.id.calculate); 
    button.setOnClickListener(new View.OnClickListener() {    
     public void onClick(View v) {     
      doCalculation(aperture.getSelectedItem()); 
       }   
      }); 
     } 


private void doCalculation(Object selectedItem) { 
    // Get entered input value 
    String cinput1 = input.getText().toString(); 
    String cinput2 = input2.getText().toString(); 
    String cinput3 = input3.getText().toString(); 
    String cinput4 = input4.getText().toString(); 
    Object cinput5 = aperture.getSelectedItem(); 
} 

}App se bloque lors de l'appel de valeur Spinner dans le calcul?

Je sais que la méthode de calcul doCalculation isnt fait quoi que ce soit encore, parce que les accidents app juste d'essayer d'obtenir la valeur de l'entrée. Si je désactive la ligne cinput5, cela fonctionne très bien. Qu'est-ce que je fais mal ici? Et sur cette note, comment puis-je convertir la valeur du compteur en une chaîne à utiliser dans le calcul?

Aussi, en tant que double vérification ... le compteur affiche une liste de nombres (1.4, 2, 2.8, 4, 5.6, etc.) et celui qui est sélectionné est le nombre que je dois utiliser dans le calcul. J'appelle la valeur correcte du spinner, non? Je m'excuse pour les erreurs probablement extrêmement évidentes. Je viens de commencer Java et après avoir fini cette application est promesse Je vais obtenir un livre!

Répondre

2

Vous déclarez aperture deux fois, une fois au début de votre code et de nouveau dans la méthode onCreate.

Dans cette ligne:

final Spinner aperture = (Spinner) findViewById(R.id.apt); 

essayer de retirer le final Spinner. Lorsque l'application atteint la dernière ligne de la méthode doCalculation, elle renvoie probablement une référence d'objet null, car elle référence l'instance d'ouverture privée qui doit encore être instanciée.

+0

Merci beaucoup! Je vais prendre l'habitude de ça un jour ... – Sean