leyna1011
2015-09-08 11:52
采纳率: 91.7%
浏览 1.9k

android获取Dialog中edittext内容时空指针异常求解决


import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;


public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public void on(View view){
        AlertDialog.Builder dialog = new AlertDialog.Builder(this);
        dialog.setTitle("title");
        LayoutInflater inflater = getLayoutInflater();
        final View v = inflater.inflate(R.layout.diy, null);
        dialog.setView(v);
        dialog.setPositiveButton("text", new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface dialog, int which) {
                EditText editText = (EditText) findViewById(R.id.editText1);
                String string = editText.getText().toString();
                Toast.makeText(MainActivity.this, string, Toast.LENGTH_SHORT).show();
            }
        });
        dialog.show();
    }
}

错误提示:32行空指针异常,看不出拿了错了。。。

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • devmiao 2015-09-08 11:55
    已采纳
    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • 静默加载 2015-09-08 12:25

    EditText editText = (EditText) findViewById(R.id.editText1);
    这行代码有问题, findViewById 这个方法默认的类是 AlertDialog 而R.id.editText1是v下面的控件。
    修改为:EditText editText = (EditText) v.findViewById(R.id.editText1);

    评论
    解决 无用
    打赏 举报
  • 我是小林小 2015-09-09 07:05

    这样找到的只是 activity中的edittext 要找到dialog中的edittext 要 : EditText editText = (EditText) v.findViewById(R.id.editText1);才行

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题