jeudi 3 septembre 2015

Edittext android, nullpointer?

When i inserting filed like:

String name = "Bob"

Data inserted successfully, but when i want to inserted data from EditText filed i have eror.

What does it mean?

java.lang.NullPointerException: Attempt to invoke virtual method 'android.text.Editable android.widget.EditText.getText()' on a null object reference at hk.ust.cse.comp107x.chatclientcolors.MyProfile$1.onClick(MyProfile.java:79)

profile class for insert data to DB

package hk.ust.cse.comp107x.chatclientcolors;

import android.app.AlertDialog;
import android.content.ContentValues;
import android.content.Context;
import android.content.DialogInterface;
import android.database.sqlite.SQLiteDatabase;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;


public class MyProfile extends ActionBarActivity {
    final Context context = this;
    Button buttonEditProfile;
    EditText editTextName, editTextSurname, editTextAge, editTextSkype, editTextEmail, editTextPhone;
    DBHelper dbHelper;
    SQLiteDatabase sqLiteDatabase;
    String name;

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

        dbHelper = new DBHelper(this, "myProfileDB.db", null, 1);

        sqLiteDatabase = dbHelper.getWritableDatabase();

        buttonEditProfile = (Button) findViewById(R.id.buttonEditProfile);

        editTextName = (EditText) findViewById(R.id.editTextEnterName);
   /*     editTextSurname = (EditText) findViewById(R.id.editTextEnterSurname);
        editTextAge = (EditText) findViewById(R.id.editTextEnterAge);
        editTextSkype = (EditText) findViewById(R.id.editTextEnterSkype);
        editTextEmail = (EditText) findViewById(R.id.editTextEnterEmail);
        editTextPhone = (EditText) findViewById(R.id.editTextEnterPhone);*/
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_my_profile, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }

    public void onClickEditProfile(View view) {
        LayoutInflater layoutInflaterEditProfile = LayoutInflater.from(context);
        View view1EditProfile =  layoutInflaterEditProfile.inflate(R.layout.edit_profile, null);


        final AlertDialog.Builder alertDialogEditProfile = new AlertDialog.Builder(MyProfile.this);
        alertDialogEditProfile.setTitle("Edit profile");
        alertDialogEditProfile.setView(view1EditProfile);
        alertDialogEditProfile.setPositiveButton("Save", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                name = editTextName.getText().toString();
                dbHelper.insertData(name);
                Log.i("TAG", "DATA added");

            }
        });
        alertDialogEditProfile.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                dialog.cancel();
            }
        });

        alertDialogEditProfile.show();
    }

}

DB class

package hk.ust.cse.comp107x.chatclientcolors;

import android.content.ContentValues;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.provider.BaseColumns;
import android.util.Log;

/**
 * Created by Oleksandr on 03.09.2015.
 */
public class DBHelper extends SQLiteOpenHelper implements BaseColumns{
    public static final String DATABASE_NAME = "myProfileDB.db";
    public static final int DATABASE_VERSION = 1;
    public static final String DATABASE_TABLE = "profile";

    public static final String NAME = "name";
    public static final String SURNAME = "surname";
    public static final String AGE = "age";
    public static final String SKYPE = "skype";
    public static final String EMAIL = "email";
    public static final String PHONE = "phone";

    private static final String DATABASE_TABLE_SCRIPT = "create table " + DATABASE_TABLE +
            " (" + BaseColumns._ID + " integer primary key autoincrement, " +  NAME + " text, " +
            SURNAME + " text, " + AGE + " integer, " + SKYPE + " text, " + EMAIL + " text, " +
            PHONE + " integer);";

    public DBHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

    public DBHelper(Context context, String name, SQLiteDatabase.CursorFactory factory,
                          int version) {
        super(context, name, factory, version);
    }

    public  boolean insertData(String name){
        SQLiteDatabase database = this.getWritableDatabase();
        ContentValues contentValues = new ContentValues();
        contentValues.put(NAME, name);
        long result = database.insert(DATABASE_TABLE, null,contentValues);
        if (result == -1)
            return false;
        else
            return true;
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL(DATABASE_TABLE_SCRIPT);
        Log.i("TAG","DB Created");
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("DROP TABLE IF IT EXISTS " + DATABASE_TABLE);
        onCreate(db);
    }
}

xml layout with alert dialog and edittexts fileds

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://ift.tt/nIICcg"
    android:layout_width="match_parent" android:layout_height="match_parent">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="@string/Entername"
        android:id="@+id/textView8"
        android:layout_alignParentTop="true"
        android:layout_alignParentStart="true" />

    <EditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/editTextEnterName"
        android:layout_below="@+id/textView8"
        android:layout_alignParentStart="true"
        android:layout_alignParentEnd="true" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="@string/EnterSurname"
        android:id="@+id/textView9"
        android:layout_below="@+id/editTextEnterName"
        android:layout_alignParentEnd="true"
        android:layout_alignParentStart="true" />

    <EditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/editTextEnterSurname"
        android:layout_below="@+id/textView9"
        android:layout_alignParentEnd="true"
        android:layout_alignParentStart="true" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="@string/EnterAge"
        android:id="@+id/textViewAge"
        android:layout_below="@+id/editTextEnterSurname"
        android:layout_alignParentStart="true" />

    <EditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/editTextEnterAge"
        android:layout_below="@+id/textViewAge"
        android:layout_alignParentStart="true"
        android:layout_alignParentEnd="true" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="@string/EnterSkype"
        android:id="@+id/textView11"
        android:layout_below="@+id/editTextEnterAge"
        android:layout_alignParentStart="true" />

    <EditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/editTextEnterSkype"
        android:layout_below="@+id/textView11"
        android:layout_alignParentStart="true"
        android:layout_alignParentEnd="true" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="@string/EnterEmail"
        android:id="@+id/textView12"
        android:layout_below="@+id/editTextEnterSkype"
        android:layout_alignParentStart="true" />

    <EditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:inputType="textEmailAddress"
        android:ems="10"
        android:id="@+id/editTextEnterEmail"
        android:layout_below="@+id/textView12"
        android:layout_alignParentStart="true"
        android:layout_alignParentEnd="true" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="@string/EnterPhone"
        android:id="@+id/textView3"
        android:layout_below="@+id/editTextEnterEmail"
        android:layout_alignParentEnd="true"
        android:layout_alignParentStart="true" />

    <EditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/editTextEnterPhone"
        android:layout_below="@+id/textView3"
        android:layout_alignParentStart="true"
        android:layout_alignParentEnd="true" />

</RelativeLayout>

Aucun commentaire:

Enregistrer un commentaire