Attempt to invoke virtual method 'android.text.Editable android.widget.EditText.getText ()' on a null object reference

2

I have a problem trying Iniciar sesión in my app; I register and enter the data correctly, but when I try to login, the application stops. When reading the logcat it indicates to me that it is an error in Registro.java .

EditText b;

b = (EditText)findViewById(R.id.TF_passdocente);

String pass = b.getText().toString();

Login.java:

package joinder.proyecto;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.app.Dialog;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class Main_docente extends AppCompatActivity {

    Button btnLogin;
    DatabaseHelper helper = new DatabaseHelper(this);
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.screen_docente);

        btnLogin = (Button)findViewById(R.id.B_logindocente);
        btnLogin.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                EditText a;
                a = (EditText)findViewById(R.id.TF_userdocente);
                String str = a.getText().toString();

                EditText b;
                b = (EditText)findViewById(R.id.TF_passdocente);
                String pass = b.getText().toString();

                String password =  helper.searchPass(str);
                if (pass.equals(password)){

                    Intent sg = new Intent(Main_docente.this, MainActivity.class);
                    sg.putExtra("Username", str);
                    startActivity(sg);

                }

                else{

                    Toast temp = Toast.makeText(Main_docente.this, "El usuario y contraseña son incorrectos", Toast.LENGTH_SHORT);
                    temp.show();
                }

            }
        });
    }
}

Registration.java:

package joinder.proyecto;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;


public class Main_formulario_docente extends AppCompatActivity {

    DatabaseHelper helper = new DatabaseHelper(this);

    Button btnRegistro;

    @Override

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.formulario_docente);

        btnRegistro = (Button)findViewById(R.id.B_signupdocente);

        btnRegistro.setOnClickListener(new View.OnClickListener() {
            @Override

            public void onClick(View v) {

                EditText name = (EditText)findViewById(R.id.TF_namedocente);
                EditText uname = (EditText)findViewById(R.id.TF_unamedocente);
                EditText email = (EditText)findViewById(R.id.TF_emaildocente);
                EditText  pass1 = (EditText)findViewById(R.id.TF_passdocente);
                EditText pass2 = (EditText)findViewById(R.id.TF_passdocente2);

                String namestr = name.getText().toString();
                String unamestr = uname.getText().toString();
                String emailstr = email.getText().toString();
                String pass1str = pass1.getText().toString();
                String pass2str = pass2.getText().toString();

                if (!pass1str.equals(pass2str)){
                    Toast pass = Toast.makeText(Main_formulario_docente.this, "Las contraseñas no coinciden", Toast.LENGTH_SHORT);
                    pass.show();
                }
                else{
                    Usuario c = new Usuario();
                    c.setName(namestr);
                    c.setUname(unamestr);
                    c.setEmail(emailstr);
                    c.setPass(pass1str);

                    helper.insertUsuario(c);

                    Intent sg = new Intent(Main_formulario_docente.this, MainActivity.class);
                    startActivity(sg);
                }


            }
        });



    }

}

Registry XML:

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:app="http://schemas.android.com/apk/res-auto"

    xmlns:tools="http://schemas.android.com/tools"

    android:id="@+id/screen_docente"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:paddingBottom="@dimen/activity_vertical_margin"

    android:paddingLeft="@dimen/activity_horizontal_margin"

    android:paddingRight="@dimen/activity_horizontal_margin"

    android:paddingTop="@dimen/activity_vertical_margin"

    android:background="#3399cc"

    tools:context="joinder.proyecto.Main_docente">

    <Button
        android:id="@+id/B_logindocente"
        android:layout_width="340dp"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:background="@drawable/border_radius_2"
        android:onClick="onButtonClick"
        android:padding="15dp"
        android:text="ENTRAR"
        android:textColor="#ffffff"
        android:textSize="15dp"
        android:textStyle="normal|bold" />

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="350dp"
        android:orientation="vertical"
        android:background="@drawable/radius"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_marginTop="35dp">


        <TextView
            android:text="Iniciar Sesion"
            android:textColor="#3399cc"
            android:textSize="30dp"
            android:textAlignment="center"
            android:padding="20dp"
            android:layout_marginTop="20dp"
            android:textStyle="bold"
            android:fontFamily="sans-serif"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/textView2" />

        <TextView
            android:id="@+id/textView4"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:text="Docente"
            android:textColor="#d83399cc"
            android:textStyle="bold|italic" />

        <ImageView
            android:id="@+id/imageView2"
            android:layout_width="match_parent"
            android:layout_height="6sp"
            android:layout_margin="10dp"
            android:background="@color/colorAccent" />

        <android.support.design.widget.TextInputLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="40dp">


        <EditText
            android:id="@+id/TF_userdocente"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="20dp"
            android:layout_marginLeft="20dp"
            android:layout_marginRight="20dp"
            android:layout_marginTop="80dp"
            android:focusableInTouchMode="true"
            style="@style/AppTheme"
            android:fontFamily="sans-serif"
            android:hint="Nombre :"
            android:imeOptions="actionDone"
            android:inputType="textAutoComplete"
            android:maxLength="30"
            android:singleLine="true"
            android:textColor="#3399cc"
            android:textColorHint="#3399cc" />

        </android.support.design.widget.TextInputLayout>

        <android.support.design.widget.TextInputLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">


            <EditText
                android:id="@+id/contraseña_docente"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_margin="20dp"
                style="@style/AppTheme"
                android:focusableInTouchMode="true"
                android:fontFamily="sans-serif"
                android:hint="Ingrese Contraseña :"
                android:imeOptions="actionDone"
                android:inputType="textPassword"
                android:maxLength="10"
                android:singleLine="true"
                android:textColor="#3399cc"
                android:textColorHint="#3399cc"/>
        </android.support.design.widget.TextInputLayout>
    </LinearLayout>

</RelativeLayout>

Logcat: (New Error)

android.database.sqlite.SQLiteException: no such column: uname (code 1):, while compiling: select uname, pass fromUsuario

                                              at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
                                              at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:889)
                                              at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:500)
                                              at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
                                              at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)
                                              at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:37)
                                              at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:44)
                                              at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1316)
                                              at android.database.sqlite.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1255)
                                              at joinder.proyecto.DatabaseHelper.searchPass(DatabaseHelper.java:66)
                                              at joinder.proyecto.Main_docente$1.onClick(Main_docente.java:34)
                                              at android.view.View.performClick(View.java:4761)
                                              at android.view.View$PerformClick.run(View.java:19767)
                                              at android.os.Handler.handleCallback(Handler.java:739)
                                              at android.os.Handler.dispatchMessage(Handler.java:95)
                                              at android.os.Looper.loop(Looper.java:135)
                                              at android.app.ActivityThread.main(ActivityThread.java:5312)
                                              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:901)
                                              at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:696)

DatabaseHelper:

import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper;

/ **  * Created by SORAIDA LEGUIZAMON on 03/30/2017.  * /

public class DatabaseHelper extends SQLiteOpenHelper {

private static final int DATABASE_VERSION=1;
private static final String DATABASE_NAME="Usuario.db";
private static final String TABLE_NAME="Usuario";
private static final String COLUMN_ID="id";
private static final String COLUMN_NAME="name";
private static final String COLUMN_UNAME="uname";
private static final String COLUMN_EMAIL="email";
private static final String COLUMN_PASS="pass";
    SQLiteDatabase db;
private static final String TABLE_CREATE="create table Usuario (id integer primary key not null, "
        + "name text not null, uname text not null, email text not null, pass text not null); ";

public DatabaseHelper(Context context){

    super(context, DATABASE_NAME, null, DATABASE_VERSION);
}


public void onCreate(SQLiteDatabase db){
    db.execSQL(TABLE_CREATE);
    this.db = db;
}

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){
    String query = "DROP TABLE IF EXISTS"+ TABLE_NAME;
    db.execSQL(query);
    this.onCreate(db);
}

public void insertUsuario(Usuario c){

    db = this.getWritableDatabase();
    ContentValues values = new ContentValues();

    String query = "select * from Usuario";
    Cursor cursor = db.rawQuery(query, null);
    int count = cursor.getCount();

    values.put(COLUMN_ID, count);
    values.put(COLUMN_NAME, c.getName());
    values.put(COLUMN_UNAME, c.getUname());
    values.put(COLUMN_EMAIL, c.getEmail());
    values.put(COLUMN_PASS, c.getPass());

    db.insert(TABLE_NAME, null, values);
    db.close();
}

public String searchPass(String uname){
    db = this.getReadableDatabase();
    String query ="select uname, pass from"+TABLE_NAME;
    Cursor cursor = db.rawQuery(query, null);
    String a,b;
    b = "not found";
    if (cursor.moveToFirst()){

        do {
            a = cursor.getString(0);

            if (a.equals(uname)){
                b = cursor.getString(1);
                break;
            }


        }while (cursor.moveToNext());
    }

        return b;

}

}

    
asked by Rosyec Parrado 31.03.2017 в 00:50
source

1 answer

1

This error:

  

Attempt to invoke virtual method 'android.text.Editable   android.widget.EditText.getText () 'on a null object reference

It occurs here:

EditText b;

b = (EditText)findViewById(R.id.TF_passdocente);

String pass = b.getText().toString();

You must ensure that the reference actually exists in the .xml of the layout that is loaded by:

setContentView(R.layout.screen_docente);

, in this case the EditText with id TF_passdocente , if you check the file screen_docente.xml , this element does not exist.

New error:

  

android.database.sqlite.SQLiteException: no such column: uname (code   1):, while compiling: select uname, pass fromUsuario

You are consulting the table fromUsuario but it does not contain the field defined as uname , maybe the name of the field is incorrect.

    
answered by 31.03.2017 / 02:07
source