2013-06-22 4 views
1

Я noob, я использую функцию поиска, чтобы получить ответ, но я ничего не нашел, поэтому у меня есть код в студии Android, а моя связь - как реальное устройство для тестирования, но каждый раз, когда я пытаюсь чтобы запустить его, на мой связующей, который говорит, что она закончилась сразу появляется сообщение: S
При нажатии на кнопки номер добавляется к TextView, основной калькулятора вот мой код:Почему мое приложение всегда сбой?

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

public class MainActivity extends Activity { 
int actuel; 
Button btn0 = (Button) findViewById(R.id.btn0); 
Button btn1 = (Button) findViewById(R.id.btn1); 
Button btn2 = (Button) findViewById(R.id.btn2); 
Button btn3 = (Button) findViewById(R.id.btn3); 
Button btn4 = (Button) findViewById(R.id.btn4); 
Button btn5 = (Button) findViewById(R.id.btn5); 
Button btn6 = (Button) findViewById(R.id.btn6); 
Button btn7 = (Button) findViewById(R.id.btn7); 
Button btn8 = (Button) findViewById(R.id.btn8); 
Button btn9 = (Button) findViewById(R.id.btn9); 
TextView output = (TextView) findViewById(R.id.textView); 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    btn0.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      addNumbers(0,view); 
     } 
    }); 
    btn1.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      addNumbers(1,view); 
     } 
    }); 
    btn2.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      addNumbers(2,view); 
     } 
    }); 
    btn3.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      addNumbers(3,view); 
     } 
    }); 
    btn4.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      addNumbers(4,view); 
     } 
    }); 
    btn5.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      addNumbers(5,view); 
     } 
    }); 
    btn6.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      addNumbers(6,view); 
     } 
    }); 
    btn7.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      addNumbers(7,view); 
     } 
    }); 
    btn8.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      addNumbers(8,view); 
     } 
    }); 
    btn9.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      addNumbers(9,view); 
     } 
    }); 

} 

private final void addNumbers(int num, View view){ 
    actuel = actuel * 10 + num; 
    output.setText(String.valueOf(actuel)); 
} 

} 
+1

Вставьте журнал сбоев ... – Plato

+2

Чтобы объяснить ответ Платона далее ... вы объявляете и пытаетесь инициализировать свои кнопки (используя 'findViewById (...)') в основной части вашей 'Деятельности' класс. Это происходит до того, как 'onCreate (...)' вызывается там, где вы вызываете 'setContentView (...)'. Пока вы не установили представление контента, любой вызов 'findViewById (...)' будет возвращать 'null' и вызовет« NullPointerException »(и сбой) при первом использовании любой из ваших кнопок. – Squonk

ответ

2

Обновите свой код:

public class MainActivity extends Activity { 
int actuel; 
Button btn0 = null; 
Button btn1 = null; 
Button btn2 = null; 
Button btn3 = null; 
Button btn4 = null; 
Button btn5 = null; 
Button btn6 = null; 
Button btn7 = null; 
Button btn8 = null; 
Button btn9 = null; 
TextView output = null; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

     btn0 = (Button) findViewById(R.id.btn0); 
     btn1 = (Button) findViewById(R.id.btn1); 
     btn2 = (Button) findViewById(R.id.btn2); 
     btn3 = (Button) findViewById(R.id.btn3); 
     btn4 = (Button) findViewById(R.id.btn4); 
     btn5 = (Button) findViewById(R.id.btn5); 
     btn6 = (Button) findViewById(R.id.btn6); 
     btn7 = (Button) findViewById(R.id.btn7); 
     btn8 = (Button) findViewById(R.id.btn8); 
     btn9 = (Button) findViewById(R.id.btn9); 
     output = (TextView) findViewById(R.id.textView); 
     ... 

Ваше приложение сбой beca используйте все свои btnX, а выходные переменные равны нулю.

+0

спасибо, он работает: D так просто :) – greenhalos

+0

круто, теперь задавайте этот вопрос как ответ, чтобы закрыть его :) – Plato