在android中创建警告框时出错

时间:2011-03-20 14:01:01

标签: java android alertdialog

嗨,我是Android的新开发者,我是一名培训师,我正在尝试创建一个警报框。

在我的项目中,我已经放置了两个编辑文本框,如果其中任何一个是空的,我想弹出一个警告框,如果两个框都填满,它将移动到一个新页面。

以下是我的编码

{ b = (Button)findViewById(R.id.widget30);

    et1 = (EditText)findViewById(R.id.et1);
    et2 = (EditText)findViewById(R.id.et2);


    b.setOnClickListener(new View.OnClickListener() 
    {
        @Override
        public void onClick(View v) 
        {
            if(et1.getText().toString().length() == 0 )
            {
                et.setVisibility(View.VISIBLE);
                alertbox();
            }
            else if (et2.getText().toString().length() == 0)
            {
                et.setVisibility(View.VISIBLE);
                alertbox();
            }
            else
            {
            main.this.finish();
            Intent myIntent = new Intent(v.getContext(), T.class);
             startActivityForResult(myIntent, 0);
            }
        }               
    });
}


public void alertbox() 
{
    et = new TextView(this);
    Builder alert =new AlertDialog.Builder(main.this);
    alert.setTitle("Alert");
    alert.setMessage("Required all fields");
    alert.setView(et);
    alert.setPositiveButton("Ok", new DialogInterface.OnClickListener()
    {
         public void onClick(DialogInterface dialog, int whichButton)
         {
            dialog.cancel();
         }
    });
    AlertDialog alert1 = alert.create();
    alert1.show();
}
}

它正在转移到新页面但警报框未打开,以下是logcat中的错误

java.lang.NullPointerException在我的编码的以下几行

{

if(et1.getText().toString().length() == 0 )
                {
                    et.setVisibility(View.VISIBLE);
                    alertbox();
                }
                else if (et2.getText().toString().length() == 0)
                {
                    et.setVisibility(View.VISIBLE);
                    alertbox();
                }
}
}

请帮我辨别我做了什么错误

3 个答案:

答案 0 :(得分:1)

可能在这一行

 et.setVisibility(View.VISIBLE);

etnull对象,因为它不存在。只有在调用alertbox()

后才会创建它

答案 1 :(得分:0)

您应该考虑查看文档:{​​{3}}

Android SDK通过showDialog()和dismissDialog()方法为您处理对话框。您需要添加onCreateDialog方法并在此处添加创建代码。

Android也会在创建对话框后重复使用,而在您的代码中,您每次都会创建一个新对话框。

这是您可以做的基本知识,还有更多选择。

答案 2 :(得分:0)

b.setOnClickListener(new OnClickListener() 
{
    @Override
    public void onClick(View v) 
    {
        if(et1.getText().toString().length() == 0 )
        {

            alertbox();
        }
        else if (et2.getText().toString().length() == 0)
        {

            alertbox();
        }
        else
        {
         Intent myIntent = new Intent(main.this, T.class);
         startActivity(myIntent);
        }
    }               
});`