有一个ImageButton按钮,我设置她点击之后会出现一个对话框,两个EditText,第一个输入一段文字(edit_note),第二个输入一个数值(edit_money)。但是在这个“确定”按钮的点击响应函数中无论我怎么用Double.valueOf(edit_money.getText().toString())都只能得到0.0。就是不管我输入什么数它都是0.0……这个问题弄得头都大了,还处在写代码的关键时刻上,恳请各位帮帮忙……也加了一个isEmpty()的判断,也确定是在EditText中已经有输入内容之后再取值,但是都解决不了问题。ImageButton ib_1=(ImageButton)findViewById(R.id.imageButton1);
        ib_1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                final AlertDialog.Builder second_builder=new AlertDialog.Builder(Note_Activity.this);
                LayoutInflater inflater=getLayoutInflater();
                final View second_view=inflater.inflate(R.layout.second_layout,null);
                second_builder.setView(R.layout.second_layout);
                second_builder.setIcon(R.mipmap.money);
                second_builder.setTitle(R.string.second_title);
                final EditText edit_money=(EditText)second_view.findViewById(R.id.editText2);
                final EditText edit_note=(EditText)second_view.findViewById(R.id.editText1);                second_builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int which) {
                        double ac = 0;
                        Intent intent=new Intent(Note_Activity.this,MainActivity.class);
                        SQLiteDatabase db=dbSQL.getWritableDatabase();
                        ContentValues values=new ContentValues();                        if(edit_money.getText().toString().isEmpty())
                        {
                            Toast.makeText(Note_Activity.this,"输入数据为空!",Toast.LENGTH_SHORT).show();
                        }
                        else 
                        {
                            ac=Double.parseDouble(edit_money.getText().toString());
                        }                        Log.i("tag-------ac:",String.valueOf(ac));日志输出:12-24 16:00:10.933 2651-2651/com.administrator.note I/tag-------ac:: 0.0

解决方案 »

  1.   

    不要用final修饰EditText,final修饰的变量是常量,只能赋值一次,之后不会发生改变了就.
      

  2.   

    你的Dialog有setView吗,你这个LayoutInflater 没有附加到任何view上面啊,这样肯定拿到都是0.自定义content要setview的吧
      

  3.   

     second_builder.setView(R.layout.second_layout);
    这句错了,改成
     second_builder.setView(second_view);你这样相当于有两个second_layout布局
      

  4.   

    谢谢各位……后来尝试了很久发现原因是因为那个TextView是一个限定数字输入的TextView。使用这个的初衷是让用户只能输入数字,最后没办法,我改成了一个普通的TextView,发现一切就正常了。虽然这样就存在了用户输入不为数字的危险……不过也算是一个解决办法了。我对于不同类型的TextView理解得还很不够。谢谢各位。
      

  5.   

                  final View second_view=inflater.inflate(R.layout.second_layout,null);
                    second_builder.setView(R.layout.second_layout);
                 final EditText edit_money=(EditText)second_view.findViewById(R.id.editText2);要么 是 
    View subView  = inflater.inflate(R.layout.sub_view, ...); 
    parent.setView(subView);
    final EditText mEditText=(EditText)subView.findViewById(R.id.edit);要么 是 
    parent.setView(R.layout.subView, ...);
    final EditText mEditText=(EditText)parent.findViewById(R.id.edit);这两种形式的
    要么子View 去做,然后将子View加载到父View上
    要么父View去做,