2012-07-22 7 views
1

J'ai écrit le code suivant et l'ai compilé mais quand je cours l'application, j'obtiens l'erreur android l'application s'est arrêtée inopinément forcer fermer l'éclipse. Je pensais que c'était parce que je n'avais pas initialisé les objets Button et TextView mais quand je les initialise, il me manque un jeton ";" Erreur. Quelle est la raison de cette erreur?Application Android Force Fermer erreur

package com.umer.first.project; 

import android.os.Bundle; 
import android.app.Activity; 
import android.view.Menu; 
import android.view.View; 
import android.widget.Button; 
import android.widget.TextView; 

public class StartingPoint extends Activity { 

int counter; 
TextView display; 
Button add, sub; 
//add= new Button(this); 
//sub=new Button(this); 
//display=new TextView(); 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_starting_point); 

    add= (Button) findViewById(R.id.aButton); 
    sub = (Button) findViewById(R.id.sButton); 
    display= (Button) findViewById(R.id.tvButton); 

    add.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View arg0) { 
      // TODO Auto-generated method stub 
      counter++; 
      display.setText("The total is " + counter); 
     } 
    }); 

    sub.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View arg0) { 
      // TODO Auto-generated method stub 

      counter--; 
      display.setText("You counter is " + counter); 

     } 
    }); 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.activity_starting_point, menu); 
    return true; 
} 
} 
+0

vous n'avez pas initialisé le compteur mais que vous faites un compteur ++/- qui n'est pas défini. – Stuck

+1

arent 'int' dans Java initialisé à' 0' par défaut? – Ronnie

+0

les types primitifs sont initialisés à zéro automatiquement –

Répondre

6

Display est un TextView, vous ne pouvez pas le jeter à un bouton.

display= (Button) findViewById(R.id.tvButton); 
+0

Merci beaucoup. My Bad –

+0

Pourquoi n'avons-nous pas besoin d'initialiser les objets bouton et textview? Est-il initialisé à NULL selon Java s'ils ne sont pas explicitement initialisés? –

+0

Oui lorsque vous définissez 'private TextView display' il peut être considéré comme NULL et ensuite vous l'initialisez avec' display = (TextView) findViewById (R.id.tvbutton) ' – Ali

0

2. Vous avez déclaré displaycomme TextView, mais initialisés commeButton, thats une exception Casting.

display= (Button) findViewById(R.id.tvButton); ///// Incorrect.

Doit être.

display= (TextView) findViewById(R.id.tvButton);

1. Est-ce que la déclaration des vues comme variables d'instance avant onCreate() Méthode, puis les initialiser dans le onCreate().