的EditText =空对象引用? [英] EditText = null Object Reference?

查看:216
本文介绍了的EditText =空对象引用?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我工作的一个登录和注册制度,我得到这个错误,而试图挖掘登录按钮。

I'm working on a login and register system and I'm getting this error while trying to tap the 'Login' button.

08-06 00:36:19.258  25808-25808/com.kylek.hatework E/AndroidRuntime﹕ FATAL EXCEPTION: main
    Process: com.kylek.hatework, PID: 25808
    java.lang.NullPointerException: Attempt to invoke virtual method 'android.text.Editable android.widget.EditText.getText()' on a null object reference
            at com.kylek.hatework.Login.onClick(Login.java:42)
            at android.view.View.performClick(View.java:5254)
            at android.view.View$PerformClick.run(View.java:21173)
            at android.os.Handler.handleCallback(Handler.java:739)
            at android.os.Handler.dispatchMessage(Handler.java:95)
            at android.os.Looper.loop(Looper.java:145)
            at android.app.ActivityThread.main(ActivityThread.java:6837)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1404)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199)

下面是我的Login.java

Here's my Login.java

package com.kylek.hatework;

import android.app.AlertDialog;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;


public class Login extends ActionBarActivity implements View.OnClickListener {
    Button bLogin;
    TextView registerLink;
    EditText etUsername, etPassword;
    String username, password;

    UserLocalStore userLocalStore;

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

        bLogin = (Button) findViewById(R.id.bLogin);
        etUsername = (EditText) findViewById(R.id.etUsername);
        etPassword = (EditText) findViewById(R.id.etPassword);
        registerLink = (TextView) findViewById(R.id.tvRegisterLink);

        bLogin.setOnClickListener(this);
        registerLink.setOnClickListener(this);

        userLocalStore = new UserLocalStore(this);
    }

    @Override
    public void onClick(View view) {
        switch (view.getId()) {
            case R.id.bLogin:
                Log.v("username", etUsername.getText().toString());
                Log.v("password", etPassword.getText().toString());

                User user = new User(username, password);

                authenticate(user);
                break;
            case R.id.tvRegisterLink:
                Intent registerIntent = new Intent(Login.this, Register.class);
                startActivity(registerIntent);
                break;
        }
    }

    private void authenticate(User user) {
        ServerRequests serverRequest = new ServerRequests(this);
        serverRequest.fetchUserDataAsyncTask(user, new GetUserCallback() {
            @Override
            public void done(User returnedUser) {
                if (returnedUser == null) {
                    showErrorMessage();
                } else {
                    logUserIn(returnedUser);
                }
            }
        });
    }

    private void showErrorMessage() {
        AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(Login.this);
        dialogBuilder.setMessage("Incorrect user details");
        dialogBuilder.setPositiveButton("Ok", null);
        dialogBuilder.show();
    }

    private void logUserIn(User returnedUser) {
        userLocalStore.storeUserData(returnedUser);
        userLocalStore.setUserLoggedIn(true);
        startActivity(new Intent(this, MainActivity.class));
    }
}

我身边看着一堆SOF上的其他物品,但没有帮助我在这种特殊情况。也许我失去了一些东西很容易,但我已经受够了试图修复它过夜。有什么建议?

I've looked around on a bunch of other articles on SOF, but nothing that helps me in this particular situation. Maybe I'm missing something easy, but I've had enough of trying to fix it for the night. Any suggestions?

推荐答案

我已经指出了一些建议,下面的code。请核实这些:

I've pointed out some suggestions in your code below. Kindly verify those :

public class Login extends ActionBarActivity implements View.OnClickListener {
Button bLogin;
TextView registerLink;
EditText etUsername, etPassword;
String username, password;

UserLocalStore userLocalStore;

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

    bLogin = (Button) findViewById(R.id.bLogin);
    etUsername = (EditText) findViewById(R.id.etUsername);
    etPassword = (EditText) findViewById(R.id.etPassword);
    registerLink = (TextView) findViewById(R.id.tvRegisterLink);

您对您的EditText(etUsername这里)之一得到一个NullPointerException异常。这意味着特定的编辑文本尚未初始化,你调用它的方法。

在下面这一行,你所得到的例外。您正在呼吁etUsername的getText()方法,该方法为空

On this particular line below, you are getting the exception. You are calling getText() method on etUsername which is null

Log.v("username", etUsername.getText().toString());

按照以下步骤来确定您的问题:

Follow the steps below to identify your issue:


  1. 验证是否EditText上在你的R.layout.activity_login xml文件上面的标识,存在与否。

  1. Verify if the above ids of EditText in your R.layout.activity_login xml file, exist or not.

验证,如果EditText上的IDS内部findViewById()提到,属于你R.layout.activity_login布局文件。

Verify that if the ids of EditText referred inside findViewById(), belongs to your R.layout.activity_login layout file.

里面的onClick()方法,用户名和密码变量初始化为默认值空。

您需要从您将从EditText上越来越值初始化它们(如果​​它不为空):

You need to initialize them from the values you will be getting from the EditText(in case it's not null):

username = etUsername.getText().toString();
password = etPassword.getText().toString();

一旦变量被正确初始化,再使用它们:

Once the variables are properly initialized, use them further:

User user = new User(username, password);
authenticate(user);

这篇关于的EditText =空对象引用?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆