验证空白 EditText 显示错误
Validating Blank EditText shows error
当我验证 EditText 登录时,我收到 NullPointerException
public boolean onMenuItemClick( MenuItem item )
{
if(item.getTitle().equals("Login"))
{
final String Usname;
final String Pswd;
Status=(TextView)findViewById(R.id.tvStatus);
Uname=(EditText)findViewById(R.id.etLUsername);
Pwd=(EditText)findViewById(R.id.etLPassword);
LayoutInflater li = LayoutInflater.from(MainActivity.this);
View promptsView = li.inflate(R.layout.login, null);
//Usname=Uname.getText().toString();
//Pswd=Pwd.getText().toString();
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(MainActivity.this);
// set dialog message
alertDialogBuilder
.setCancelable(true)
.setPositiveButton("Login",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,int id) {
if(Uname!=null&&Pwd!=null){
new Asynctask_Login().execute();
}
else if(Pwd!=null){
Status.setText("No Username");
Status.setVisibility(View.VISIBLE);
}
else if(Uname!=null){
Status.setText("No Password");
Status.setVisibility(View.VISIBLE);
}
else{
Status.setText("No Username and Password");
Status.setVisibility(View.VISIBLE);
}
}
})
.setNegativeButton("Register",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,int id) {
try {
Intent tvi = new Intent("com.takebestloan.action.REGISTER");
startActivity(tvi);
} catch (Exception e) {
// TODO: handle exception
}
dialog.cancel();
}
});
AlertDialog alertDialog = alertDialogBuilder.create();
alertDialog.setView(promptsView,0,0,0,0);
alertDialog.show();
}else if(item.getItemId()==R.id.mRegister)
{
try {
Intent tvi = new Intent("com.takebestloan.action.REGISTER");
startActivity(tvi);
} catch (Exception e) {
// TODO: handle exception
}
}else if(item.getTitle().equals("Nearby ATM"))
{
//Toast.makeText( MainActivity.this, "Comming soon..", Toast.LENGTH_SHORT ).show();
try {
Intent in = new Intent(Intent.ACTION_VIEW,Uri.parse("https://maps.google.co.in/maps?q=atm&z=16"));
in.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK& Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
in.setClassName("com.google.android.apps.maps","com.google.android.maps.MapsActivity");
startActivity(in);
} catch (Exception e) {
// tm.showToast(R.string.tm_gmap_not_detected);
e.printStackTrace();
}
}
else if(item.getTitle().equals("Nearby Banks"))
{
//Toast.makeText( MainActivity.this, "Comming soon..", Toast.LENGTH_SHORT ).show();
try {
Intent in = new Intent(Intent.ACTION_VIEW,Uri.parse("https://maps.google.co.in/maps?q=bank&z=16"));
in.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK& Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
in.setClassName("com.google.android.apps.maps","com.google.android.maps.MapsActivity");
startActivity(in);
} catch (Exception e) {
// tm.showToast(R.string.tm_gmap_not_detected);
e.printStackTrace();
}
}
else if(item.getTitle().equals("Home Loans"))
{
try {
Intent tvi = new Intent(getApplicationContext(),HL.class);
startActivity(tvi);
} catch (Exception e) {
// TODO: handle exception
}
}
else if(item.getTitle().equals("Loan Against Property"))
{
try {
Intent tvi = new Intent(getApplicationContext(),LAP.class);
startActivity(tvi);
} catch (Exception e) {
// TODO: handle exception
}
}
else
{
Toast.makeText( MainActivity.this, "Romba NOT", Toast.LENGTH_SHORT ).show();
}
return true;
}
} );
menu.show();
}
});
Check if EditText is empty.
中的所有方法我都试过了
Logcat:
06-17 18:34:04.019: E/AndroidRuntime(24618): FATAL EXCEPTION: main
06-17 18:34:04.019: E/AndroidRuntime(24618): java.lang.NullPointerException
06-17 18:34:04.019: E/AndroidRuntime(24618): at com.takebestloan.IFSC.MainActivity.onMenuItemClick(MainActivity.java:241)
06-17 18:34:04.019: E/AndroidRuntime(24618): at com.takebestloan.mainMenu.HoneycombHelper.onMenuItemClick(HoneycombHelper.java:52)
06-17 18:34:04.019: E/AndroidRuntime(24618): at android.widget.PopupMenu.onMenuItemSelected(PopupMenu.java:142)
06-17 18:34:04.019: E/AndroidRuntime(24618): at com.android.internal.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:735)
06-17 18:34:04.019: E/AndroidRuntime(24618): at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:149)
06-17 18:34:04.019: E/AndroidRuntime(24618): at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:874)
06-17 18:34:04.019: E/AndroidRuntime(24618): at com.android.internal.view.menu.MenuPopupHelper.onItemClick(MenuPopupHelper.java:156)
06-17 18:34:04.019: E/AndroidRuntime(24618): at android.widget.AdapterView.performItemClick(AdapterView.java:292)
06-17 18:34:04.019: E/AndroidRuntime(24618): at android.widget.AbsListView.performItemClick(AbsListView.java:1394)
06-17 18:34:04.019: E/AndroidRuntime(24618): at android.widget.AbsListView$PerformClick.run(AbsListView.java:3024)
06-17 18:34:04.019: E/AndroidRuntime(24618): at android.widget.AbsListView.run(AbsListView.java:3830)
06-17 18:34:04.019: E/AndroidRuntime(24618): at android.os.Handler.handleCallback(Handler.java:605)
06-17 18:34:04.019: E/AndroidRuntime(24618): at android.os.Handler.dispatchMessage(Handler.java:92)
06-17 18:34:04.019: E/AndroidRuntime(24618): at android.os.Looper.loop(Looper.java:137)
06-17 18:34:04.019: E/AndroidRuntime(24618): at android.app.ActivityThread.main(ActivityThread.java:4517)
06-17 18:34:04.019: E/AndroidRuntime(24618): at java.lang.reflect.Method.invokeNative(Native Method)
06-17 18:34:04.019: E/AndroidRuntime(24618): at java.lang.reflect.Method.invoke(Method.java:511)
06-17 18:34:04.019: E/AndroidRuntime(24618): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:993)
06-17 18:34:04.019: E/AndroidRuntime(24618): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:760)
06-17 18:34:04.019: E/AndroidRuntime(24618): at dalvik.system.NativeStart.main(Native Method)
错误出现在行Usname=Uname.getText().toString();
应用强制关闭
通过此检查 Null
if (myString != null && !myString.isEmpty()) {
// doSomething
}
并解决错误
Usname=Uname.text.toString();
关于为什么会出现空指针异常,有两种可能。首先Uname=(EditText)findViewById(R.id.etLUsername);
如果找不到视图 edLUsername
,实际上可能会为 Uname 分配 null。
其次,Uname.getText()
可能会返回 null,因此当您调用 toString()
时,它会导致空指针异常。你应该添加一些错误检查
Editable text = Uname.getText();
if (text != null) {
Uname = text.toString();
}
我弄错了。在我的例子中,我在设置布局之前设置了 EditTexts。
我做了以下更改:
Status=(TextView)promptsView.findViewById(R.id.tvStatus);
Uname=(EditText)promptsView.findViewById(R.id.etLUsername);
Pwd=(EditText)promptsView.findViewById(R.id.etLPassword);
我得到了以下帮助:NullPointerException thrown on TextView setText()
当我验证 EditText 登录时,我收到 NullPointerException
public boolean onMenuItemClick( MenuItem item )
{
if(item.getTitle().equals("Login"))
{
final String Usname;
final String Pswd;
Status=(TextView)findViewById(R.id.tvStatus);
Uname=(EditText)findViewById(R.id.etLUsername);
Pwd=(EditText)findViewById(R.id.etLPassword);
LayoutInflater li = LayoutInflater.from(MainActivity.this);
View promptsView = li.inflate(R.layout.login, null);
//Usname=Uname.getText().toString();
//Pswd=Pwd.getText().toString();
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(MainActivity.this);
// set dialog message
alertDialogBuilder
.setCancelable(true)
.setPositiveButton("Login",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,int id) {
if(Uname!=null&&Pwd!=null){
new Asynctask_Login().execute();
}
else if(Pwd!=null){
Status.setText("No Username");
Status.setVisibility(View.VISIBLE);
}
else if(Uname!=null){
Status.setText("No Password");
Status.setVisibility(View.VISIBLE);
}
else{
Status.setText("No Username and Password");
Status.setVisibility(View.VISIBLE);
}
}
})
.setNegativeButton("Register",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,int id) {
try {
Intent tvi = new Intent("com.takebestloan.action.REGISTER");
startActivity(tvi);
} catch (Exception e) {
// TODO: handle exception
}
dialog.cancel();
}
});
AlertDialog alertDialog = alertDialogBuilder.create();
alertDialog.setView(promptsView,0,0,0,0);
alertDialog.show();
}else if(item.getItemId()==R.id.mRegister)
{
try {
Intent tvi = new Intent("com.takebestloan.action.REGISTER");
startActivity(tvi);
} catch (Exception e) {
// TODO: handle exception
}
}else if(item.getTitle().equals("Nearby ATM"))
{
//Toast.makeText( MainActivity.this, "Comming soon..", Toast.LENGTH_SHORT ).show();
try {
Intent in = new Intent(Intent.ACTION_VIEW,Uri.parse("https://maps.google.co.in/maps?q=atm&z=16"));
in.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK& Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
in.setClassName("com.google.android.apps.maps","com.google.android.maps.MapsActivity");
startActivity(in);
} catch (Exception e) {
// tm.showToast(R.string.tm_gmap_not_detected);
e.printStackTrace();
}
}
else if(item.getTitle().equals("Nearby Banks"))
{
//Toast.makeText( MainActivity.this, "Comming soon..", Toast.LENGTH_SHORT ).show();
try {
Intent in = new Intent(Intent.ACTION_VIEW,Uri.parse("https://maps.google.co.in/maps?q=bank&z=16"));
in.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK& Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
in.setClassName("com.google.android.apps.maps","com.google.android.maps.MapsActivity");
startActivity(in);
} catch (Exception e) {
// tm.showToast(R.string.tm_gmap_not_detected);
e.printStackTrace();
}
}
else if(item.getTitle().equals("Home Loans"))
{
try {
Intent tvi = new Intent(getApplicationContext(),HL.class);
startActivity(tvi);
} catch (Exception e) {
// TODO: handle exception
}
}
else if(item.getTitle().equals("Loan Against Property"))
{
try {
Intent tvi = new Intent(getApplicationContext(),LAP.class);
startActivity(tvi);
} catch (Exception e) {
// TODO: handle exception
}
}
else
{
Toast.makeText( MainActivity.this, "Romba NOT", Toast.LENGTH_SHORT ).show();
}
return true;
}
} );
menu.show();
}
});
Check if EditText is empty.
中的所有方法我都试过了Logcat:
06-17 18:34:04.019: E/AndroidRuntime(24618): FATAL EXCEPTION: main
06-17 18:34:04.019: E/AndroidRuntime(24618): java.lang.NullPointerException
06-17 18:34:04.019: E/AndroidRuntime(24618): at com.takebestloan.IFSC.MainActivity.onMenuItemClick(MainActivity.java:241)
06-17 18:34:04.019: E/AndroidRuntime(24618): at com.takebestloan.mainMenu.HoneycombHelper.onMenuItemClick(HoneycombHelper.java:52)
06-17 18:34:04.019: E/AndroidRuntime(24618): at android.widget.PopupMenu.onMenuItemSelected(PopupMenu.java:142)
06-17 18:34:04.019: E/AndroidRuntime(24618): at com.android.internal.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:735)
06-17 18:34:04.019: E/AndroidRuntime(24618): at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:149)
06-17 18:34:04.019: E/AndroidRuntime(24618): at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:874)
06-17 18:34:04.019: E/AndroidRuntime(24618): at com.android.internal.view.menu.MenuPopupHelper.onItemClick(MenuPopupHelper.java:156)
06-17 18:34:04.019: E/AndroidRuntime(24618): at android.widget.AdapterView.performItemClick(AdapterView.java:292)
06-17 18:34:04.019: E/AndroidRuntime(24618): at android.widget.AbsListView.performItemClick(AbsListView.java:1394)
06-17 18:34:04.019: E/AndroidRuntime(24618): at android.widget.AbsListView$PerformClick.run(AbsListView.java:3024)
06-17 18:34:04.019: E/AndroidRuntime(24618): at android.widget.AbsListView.run(AbsListView.java:3830)
06-17 18:34:04.019: E/AndroidRuntime(24618): at android.os.Handler.handleCallback(Handler.java:605)
06-17 18:34:04.019: E/AndroidRuntime(24618): at android.os.Handler.dispatchMessage(Handler.java:92)
06-17 18:34:04.019: E/AndroidRuntime(24618): at android.os.Looper.loop(Looper.java:137)
06-17 18:34:04.019: E/AndroidRuntime(24618): at android.app.ActivityThread.main(ActivityThread.java:4517)
06-17 18:34:04.019: E/AndroidRuntime(24618): at java.lang.reflect.Method.invokeNative(Native Method)
06-17 18:34:04.019: E/AndroidRuntime(24618): at java.lang.reflect.Method.invoke(Method.java:511)
06-17 18:34:04.019: E/AndroidRuntime(24618): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:993)
06-17 18:34:04.019: E/AndroidRuntime(24618): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:760)
06-17 18:34:04.019: E/AndroidRuntime(24618): at dalvik.system.NativeStart.main(Native Method)
错误出现在行Usname=Uname.getText().toString();
应用强制关闭
通过此检查 Null
if (myString != null && !myString.isEmpty()) {
// doSomething
}
并解决错误
Usname=Uname.text.toString();
关于为什么会出现空指针异常,有两种可能。首先Uname=(EditText)findViewById(R.id.etLUsername);
如果找不到视图 edLUsername
,实际上可能会为 Uname 分配 null。
其次,Uname.getText()
可能会返回 null,因此当您调用 toString()
时,它会导致空指针异常。你应该添加一些错误检查
Editable text = Uname.getText();
if (text != null) {
Uname = text.toString();
}
我弄错了。在我的例子中,我在设置布局之前设置了 EditTexts。 我做了以下更改:
Status=(TextView)promptsView.findViewById(R.id.tvStatus);
Uname=(EditText)promptsView.findViewById(R.id.etLUsername);
Pwd=(EditText)promptsView.findViewById(R.id.etLPassword);
我得到了以下帮助:NullPointerException thrown on TextView setText()