0

9 つのボタンがあり、それぞれが電卓のように EditText に数値を打ち込みます。私は単純なプロジェクトとしてこれを行っているだけですが、これらの NullPointerExeptions を受け取り続けています。事前に作成された onCreate() メソッドのみで実行すると動作するように見えますが、クラス宣言の下で変数の宣言を開始すると、いくつかの例外がスローされます。どんな助けでも大歓迎です。ありがとう。

public class MainActivity extends Activity implements OnClickListener {

EditText display = (EditText)findViewById(R.id.numdisplay);
Button clearbtn = (Button)findViewById(R.id.clear);
Button ninenum = (Button)findViewById(R.id.nine);
Button eightnum = (Button)findViewById(R.id.eight);
Button sevennum = (Button)findViewById(R.id.seven);
Button sixnum = (Button)findViewById(R.id.six);
Button fivenum = (Button)findViewById(R.id.five);
Button fournum = (Button)findViewById(R.id.four);
Button threenum = (Button)findViewById(R.id.three);
Button twonum = (Button)findViewById(R.id.two);
Button onenum = (Button)findViewById(R.id.one);
Button enterbtn = (Button)findViewById(R.id.enter);

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    onclicks(); //setting all the onclick listeners
}

public void onclicks() { //just setting onclick listeners, so it doesn't bloat up the oncreate method
    clearbtn.setOnClickListener(this);
    ninenum.setOnClickListener(this);
    eightnum.setOnClickListener(this);
    sevennum.setOnClickListener(this);
    sixnum.setOnClickListener(this);
    fivenum.setOnClickListener(this);
    fournum.setOnClickListener(this);
    threenum.setOnClickListener(this);
    twonum.setOnClickListener(this);
    onenum.setOnClickListener(this);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

@Override
public void onClick(View v) {
    // TODO Auto-generated method stub
    switch(v.getId()){
    case R.id.clear: /** More switch cases will be put here*/
           display.setText("");
           break;
}
}
}
4

3 に答える 3

0

Findviewbyid は、そのレイアウトを contentView に設定した後にのみ返されます。あなたがしていることは、クラスの負荷を取得しようとしています。

追加してみる

EditText display = (EditText)findViewById(R.id.numdisplay);
Button clearbtn = (Button)findViewById(R.id.clear);
Button ninenum = (Button)findViewById(R.id.nine);
Button eightnum = (Button)findViewById(R.id.eight);
Button sevennum = (Button)findViewById(R.id.seven);
Button sixnum = (Button)findViewById(R.id.six);
Button fivenum = (Button)findViewById(R.id.five);
Button fournum = (Button)findViewById(R.id.four);
Button threenum = (Button)findViewById(R.id.three);
Button twonum = (Button)findViewById(R.id.two);
Button onenum = (Button)findViewById(R.id.one);
Button enterbtn = (Button)findViewById(R.id.enter);

setContentViewステートメントの後

于 2013-05-05T06:54:52.987 に答える