Android 尝试从EditText提取文本时获取NullPointerException

Android 尝试从EditText提取文本时获取NullPointerException,android,android-edittext,Android,Android Edittext,我在这个onClick()-方法上得到了一个NullPointerException。在线 String standardT = smsText.getText().toString(). 这是setStandardSMS方法和alertDialog我遇到的问题 public void setStandardSMS(){ AlertDialog.Builder standardSMSBuilder = new AlertDialog.Builder(this); LayoutInflater

我在这个
onClick()
-方法上得到了一个
NullPointerException
。在线

String standardT = smsText.getText().toString().
这是
setStandardSMS
方法和
alertDialog
我遇到的问题

public void setStandardSMS(){
AlertDialog.Builder standardSMSBuilder = new AlertDialog.Builder(this);
LayoutInflater inflater = this.getLayoutInflater();
View view = inflater.inflate(R.layout.standard_text, null)
standardSMSBuilder.setView(view);
final EditText smsText = (EditText)view.findViewById(R.id.standard_sms);
standardSMSBuilder.setPositiveButton(R.string.saveButton, new DialogInterface.OnClickListener() {

@Override
public void onClick(DialogInterface dialog, int which) {
    Context context = getApplicationContext();

    CharSequence text = "Du maa fylle inn alle felt!";
    int duration = Toast.LENGTH_SHORT;
    Toast toast = Toast.makeText(context, text, duration);
    String standardT = smsText.getText().toString();

    if(TextUtils.isEmpty(standardT)){
        Intent newIntent = getIntent();
        newIntent.putExtra("tag_text_txt", standardT);
        setResult(2, newIntent);
    } else {
        toast.show();
    }

}
});

smsDialog = standardSMSBuilder.create();
standardSMSBuilder.show();
}
标准文本.xml

<EditText 
    android:id="@+id/standard_sms"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:paddingLeft="4dp"
    android:paddingRight="4dp"
    android:gravity="top"
    android:lines="8"
    android:background="@drawable/border"
    android:inputType="textMultiLine"
/>

我真正想要的是将用户写入的文本保存到数据库中。但这里的密码不断被破解

谁能看出我做错了什么

更新:使用整个setStandardSMS方法和标准的_text.xml进行更新。

getText()
可能返回null。这意味着您的调用
toString()
可能会抛出
NullPointerException
。为了避免这种情况,您可以改为使用
String.valueOf()

以下是正确测试字符串是否为空(null或length=0)的方法:

试试这个

public void setStandardSMS(){
AlertDialog.Builder standardSMSBuilder = new AlertDialog.Builder(this);
LayoutInflater inflater = this.getLayoutInflater();
View view = inflater.inflate(R.layout.standard_text, null)
standardSMSBuilder.setView(view);
final EditText smsText = (EditText)view.findViewById(R.id.standard_sms);
standardSMSBuilder.setPositiveButton(R.string.saveButton, new DialogInterface.OnClickListener() {

    @Override
    public void onClick(DialogInterface dialog, int which) {
        Context context = getApplicationContext();

        CharSequence text = "Du maa fylle inn alle felt!";
        int duration = Toast.LENGTH_SHORT;
        Toast toast = Toast.makeText(context, text, duration);
        String standardT = smsText.getText().toString();

        if(TextUtils.isEmpty(standardT)){
            Intent newIntent = getIntent();
            newIntent.putExtra("tag_text_txt", standardT);
            setResult(2, newIntent);
        } else {
            toast.show();
        }

    }
});

smsDialog = standardSMSBuilder.create();
standardSMSBuilder.show();
}

过早调用
findViewById
?您必须在
setContentView
之后调用它。。。(假设您正在使用活动)不,这还为时过早。它在setContentView之后。现在只需执行
stringstandardt=smsText.getText()
。它是否引发NullPointerException?@olavimutanoja first EditView.getText不返回字符串second似乎无法返回null,然后问题应作为offtopic关闭,因为:
寻求调试帮助的问题(“为什么此代码不工作?”)必须包含所需的行为,一个特定的问题或错误,以及在问题本身中重现它所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。
。。。似乎您正在使用对话框。。。你没有告诉我们这个EditView在活动布局或对话框布局中的位置…@Selvin啊,我的错。它返回扩展CharSequence的Editable。因此,转换是必需的,但不一定与toString()一起使用。让我更新一下,至少现在它写了祝酒词!谢谢很明显,仍然找不到输入。现在,当你不再得到NPE时,你可以调试它,以找出没有得到输入值的原因。
public void setStandardSMS(){
AlertDialog.Builder standardSMSBuilder = new AlertDialog.Builder(this);
LayoutInflater inflater = this.getLayoutInflater();
View view = inflater.inflate(R.layout.standard_text, null)
standardSMSBuilder.setView(view);
final EditText smsText = (EditText)view.findViewById(R.id.standard_sms);
standardSMSBuilder.setPositiveButton(R.string.saveButton, new DialogInterface.OnClickListener() {

    @Override
    public void onClick(DialogInterface dialog, int which) {
        Context context = getApplicationContext();

        CharSequence text = "Du maa fylle inn alle felt!";
        int duration = Toast.LENGTH_SHORT;
        Toast toast = Toast.makeText(context, text, duration);
        String standardT = smsText.getText().toString();

        if(TextUtils.isEmpty(standardT)){
            Intent newIntent = getIntent();
            newIntent.putExtra("tag_text_txt", standardT);
            setResult(2, newIntent);
        } else {
            toast.show();
        }

    }
});

smsDialog = standardSMSBuilder.create();
standardSMSBuilder.show();
}