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行空指针异常,看不出拿了错了。。。

http://blog.csdn.net/mal327/article/details/7011052

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

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