私はAndroid App Devの初心者です:いつも力を閉じています

私は最近、Androidアプリケーションの開発方法を学び始めました。私はかなりJavaに堪能ですが、私はまだAndroidとXMLのハングアップのハングアップを取得しようとしています。

だから、事前に助けてくれてありがとう:D!

今は、EditTextウィジェットとボタンを持つアプリケーションを作成しようとしています。現在、私のすべてのコードはボタンのOnClickListenerを作成し、OnClickメソッドを定義しています。なぜ私はそれが強制終了しているのか分かりません。私はいくつかの小さなプログラム(主にボタンを試してみる)を試していましたが、この問題も数回起こっていましたので、このコードに固有のものではないと思います。

ここにコードです:

public class AdditionActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Toast.makeText(AdditionActivity.this, "Welcome to Addition Helper!", Toast.LENGTH_SHORT).show();

        final EditText answerBox = (EditText) findViewById(R.id.answerBox);
        final Button button = (Button) findViewById(R.id.button);
        final TextView problem = (TextView) findViewById(R.id.problem);
//        
        //problem.setText("5+4");

        button.setOnClickListener(new OnClickListener()
        {
            public void onClick(View v)
            {
                Toast.makeText(AdditionActivity.this, "Started", Toast.LENGTH_SHORT);
                String temp = problem.getText().subSequence(0, 1).toString();
                int first = Integer.parseInt(temp);
                temp = problem.getText().subSequence(2,3).toString();
                int second = Integer.parseInt(temp);
                int answer = first + second;
                if(Integer.parseInt(answerBox.getText().toString()) == answer) 
                    Toast.makeText(AdditionActivity.this, "Correct!!!!!", Toast.LENGTH_SHORT);
                else
                    Toast.makeText(AdditionActivity.this, "WRONG", Toast.LENGTH_SHORT);
            }
        });
    }
}

だから初心者が頻繁に強制終了したり、自分のコードに間違ったことをしているのであれば誰でも知っていれば素晴らしいだろう!私のレイアウトXMLファイルには、EditTextウィジェット、TextViewウィジェット、およびボタンがあります。

もう一度お時間をいただき、本当にありがとうございます。

0
logcatの出力は、強制的に何が起こっているかを示します。 eclipseでDDMSをクリックし、logcatタブを探します。
追加された 著者 Steve Blackwell,
それはいつ閉じるでしょうか? UIを表示する前に、またはボタンをクリックするなどの前に、
追加された 著者 confusedKid,

1 答え

あなたのシナリオはEditTextの1 + 1に入力して、ボタンを押してTextViewに結果を表示すると仮定します。したがって、

これは間違っています:EditText answerBoxとTextViewの問題
これは正しいです:EditTextの問題とTextViewのanswerBox

強制終了は、主にこの行からのNullPointerExceptionまたはArrayIndexOutofBoundExceptionによるものです。

String temp = problem.getText().subSequence(0, 1).toString();
0
追加された
どのようにして最初に問題のテキストビューを作成しますか?XMLまたはプログラム経由ですか?私はproblem.setText( "5 + 4")をコメントアウトしています。 textviewに何もない場合、problem.getText()は空の文字列を返します。サブシーケンス(0,1)が空の文字列の場合、ArrayIndexOutofBoubdExceptionが発生します。
追加された 著者 yorkw,
誰かがすでに提案しているように、Eclipseを使用している場合、logcatはすべてを伝えることができます。ウィンドウ - > Open Prespective - > DDMSをクリックします。
追加された 著者 yorkw,
いいえ、あなたはランダムに追加された質問をしなければなりません。答えを入れます。あなたが入れた番号が正しいかどうかを教えてくれるでしょう。あなたはNullPointerExceptionまたはArrayIndexOutofBoundExceptionについて詳しく説明できますか?感謝
追加された 著者 bhsu,
私は文字列を作成し、その文字列を問題のTextViewに入れました。ユーザーが回答を入力した後、私はTextViewのテキストを変更します。だから、間違いはないでしょうか?
追加された 著者 bhsu,