0

私はAndroidの初心者で、TextViewで押したボタンのテキストを表示するだけの次の簡単なプログラムを作成しました(常にランタイムエラーが発生します):

package com.hmz.secondapp;

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 AppPageActivity extends Activity {

    Button btnPlus;
    Button btnMinus;
    Button btnMul;
    Button btnDiv;

    TextView resultTextView;

    View.OnClickListener operations = new View.OnClickListener() {
        public void onClick(View v) {

            Button pressedButton = (Button) v;

            String buttonLabel = pressedButton.getText().toString();

            resultTextView.setText(buttonLabel);
        }
    };

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.app_page);

        btnPlus.setOnClickListener(operations);
        btnMinus.setOnClickListener(operations);
        btnMul.setOnClickListener(operations);
        btnDiv.setOnClickListener(operations);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.app_page, menu);
        return true;
    }
}
4

2 に答える 2

3

あなたの btnPlus オブジェクトは null です。次のような onCreate メソッドでインスタンス化する必要があります

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.app_page);

    btnPlus  = (Button)findViewById(R.id.YOUR_BUTTON_ID);
    btnMinus = (Button)findViewById(R.id.YOUR_BUTTON_ID);
    btnMul   = (Button)findViewById(R.id.YOUR_BUTTON_ID);
    btnDiv   = (Button)findViewById(R.id.YOUR_BUTTON_ID);

    btnPlus.setOnClickListener(operations);
    btnMinus.setOnClickListener(operations);
    btnMul.setOnClickListener(operations);
    btnDiv.setOnClickListener(operations);
}

また、setText メソッドを使用する前に、resultTextView オブジェクトをインスタンス化します。

于 2012-09-26T07:19:18.933 に答える
0

あなたのコードから、問題はボタン (btnPlus、btnMinus、btnMul、btnDiv) と TextView resultTextView を初期化していないようです。

btnPlus        = (Button)findViewById(Button Id);
btnMinus       = (Button)findViewById(Button Id);
btnMul         = (Button)findViewById(Button Id);
btnDiv         = (Button)findViewById(Button Id);
resultTextView = (Button)findViewById(TextView Id);

最初にこれらのビューを初期化してから、クリック イベントやテキストの設定など、これらのビューに任意の操作を適用できます。

于 2012-09-26T07:24:27.477 に答える