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. 当您单击“插入评论”按钮时,会出现一个 TextEdit 字段,您可以输入您的评论 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 中初始化注释并立即通过以下代码使其不可见(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
于 2012-05-26T16:37:05.667 回答