0

私はAndroidの初心者です。テストとして、EditTextにテキストを挿入して表示するプログラムを作成したいと思います。EditTextに値がない場合に、「最初にコメントを挿入してください」というダイアログボックスをプログラムに表示させたい。だが

comments.getText().toString()==null

エラーが発生します。これが私のコードです:

package android.insertcomments;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.*;

public class InsertCommentsActivity extends Activity {
/** Called when the activity is first created. */

public Button insertcom;
public Button displaycom;
public EditText comments;
public Button savecom;

@Override
public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setTitle("Insert Comments App");
    setContentView(R.layout.home);

    insertcom  = (Button) findViewById(R.id.insertcom);
    displaycom = (Button) findViewById(R.id.displaycom);

    insertcom.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
        //  Perform action on click
            addListenerOnButton();
        }

    });


   displaycom.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
        // Perform action on click
            if (comments.getText().toString()==null)
                  noCommentsErrormessage();

            else
                  // Display comments       
        }

    });

}

public void addListenerOnButton() {

    setContentView(R.layout.comments_adder);

    savecom    = (Button) findViewById(R.id.savecom);
    savecom.setOnClickListener(new OnClickListener() {

        public void onClick(View v) {

            comments   = (EditText) findViewById(R.id.commentsEditText);

            Toast.makeText(InsertCommentsActivity.this, comments.getText().toString(),
                    Toast.LENGTH_SHORT).show();

        }


    });


}

public void noCommentsErrormessage() {
//  TODO Auto-generated method stub
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setTitle("Error!")
            .setMessage("Please insert comments first")
            .setCancelable(false)
            .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int id) {
                     dialog.cancel();
                }
            });

     AlertDialog alert = builder.create();
     alert.show();
}
}

私のコードは次のように機能するはずです。1。[コメントの挿入]ボタンをクリックすると、テキストエディットフィールドが表示され、コメントを入力できます。2. [コメントの表示]ボタンをクリックすると、プログラムは値があるかどうかを確認します。 EditTextフィールドに保存されます-いいえの場合、「最初にコメントを挿入してください」というダイアログボックスが表示されます-はいの場合、TextEditフィールドの内容が表示されます。

どんな助けでも大歓迎です。よろしくお願いします。

4

2 に答える 2

1
  comments   = (EditText) findViewById(R.id.commentsEditText);

oncreateメソッドに含まれている必要があります。また、あるボタンのclickeイベントで、別のボタンイベントを使用しているため、クラッシュします。

于 2012-05-26T15:53:11.617 に答える
0

したがって、コメントの挿入が押されたときに EditText を表示する必要があります。次のように実行します。Agrwal が言ったように、oncreate でコメントを初期化し、次のコードですぐに invisible(4)/gone(8) にします。

    comments = (EditText) findViewById(R.id.commentsEditText); 
    comments.setVisibility(8);//to make it invisible
    comments.setEnabled(false);//to disable it

次に、 insertcom のonclick()メソッドで、 EditTextを表示/有効にします。

comments.setVisibility(0);//to make it visible
comments.setEnabled(true);//to enaable it
于 2012-05-26T16:37:05.667 に答える