获取EditText字段的值

时间:2012-05-26 15:52:08

标签: android gettext tostring textedit

我是一个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.单击“插入注释”按钮时,将显示TextEdit字段,您可以输入注释 2.单击“显示注释”按钮时,程序将检查EditText字段中是否存储了某些值 - 如果没有,它会显示一个对话框,上面写着“请先插入评论” - 如果它显示TextEdit字段的内容。

非常感谢任何帮助。 提前感谢你。

2 个答案:

答案 0 :(得分:1)

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

必须在oncreate方法中,并且在一个按钮的单击事件中,您正在使用另一个按钮事件,因此它正在崩溃。

答案 1 :(得分:0)

因此,您希望在按下插入注释时显示EditText。做到如下: 正如Agrwal所说,在oncreate中初始化注释并立即通过以下代码使其不可见(4)/消失(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