Anu
Anu

Reputation: 33

Android Test App

APP AIM When I Click on Login Button it should save the Name & Password in Database, then it should display a new activity in which when clicked show it should get data from database and display it in Textview provided.When next button is clicked it should display next data row in textview.

Request I am Newbie to Android Please help me out.Thank You.

MAIN ACTIVITY

public class MainActivity extends ActionBarActivity {

DatabaseHelper myDb = new DatabaseHelper(getBaseContext());
EditText et_Username, et_Password;
Button bt_Login;

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

    //INITIALISING VIEWS
    et_Username = (EditText) findViewById(R.id.etUsername);
    et_Password = (EditText) findViewById(R.id.etPassword);
    bt_Login = (Button) findViewById(R.id.btLogin);

    //IMPLEMENTING ON CLICK LISTENER
    bt_Login.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            String name,pass;
            name = et_Username.getText().toString();
            pass = et_Password.getText().toString();
            myDb.Insert(name, pass);
            Intent i = new Intent(MainActivity.this,DataActivity.class);
            startActivity(i);
        }
    });

}

}

DATAHELPER

public class DatabaseHelper extends SQLiteOpenHelper {

public static final String DATABASE_NAME = "mydatabase.db";
public static final String TABLE_NAME = "Details";
public static final String COL_1 = "NAME";
public static final String COL_2 = "PASSWORD";



public DatabaseHelper(Context context){
    super(context, DATABASE_NAME, null, 1);
}


@Override
public void onCreate(SQLiteDatabase db) {
    db.execSQL("CREATE TABLE " + TABLE_NAME + " (NAME TEXT PRIMARY KEY, PASSWORD TEXT) ");

}

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

public boolean Insert(String name, String password){
    SQLiteDatabase db = this.getWritableDatabase();
    ContentValues cv = new ContentValues();
    cv.put(COL_1, name);
    cv.put(COL_2, password);
    long res = db.insert(TABLE_NAME, null, cv);
    if(res == -1)
        return false;
    else
        return true;
  }

public Cursor getAllData()
{
    SQLiteDatabase db = this.getWritableDatabase();
    Cursor cursor = db.rawQuery("SELECT * FROM " + TABLE_NAME, null);
    return cursor;
}

}

DATA ACTIVITY

public class DataActivity extends Activity {

DatabaseHelper myDb = new DatabaseHelper(getBaseContext());


TextView tv_Name,tv_Password;
Button bt_Ok,bt_Next;
String showName,showPass;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_data);

    //Initialising Views
    tv_Name = (TextView) findViewById(R.id.tvShowUsername);
    tv_Password = (TextView) findViewById(R.id.tvShowPassword);
    bt_Ok = (Button) findViewById(R.id.btOk);
    bt_Next = (Button) findViewById(R.id.btNxt);

    bt_Ok.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            Cursor cursor = myDb.getAllData();
            cursor.moveToFirst();
            if(cursor != null){

                        showName = cursor.getString(0);
                        showPass = cursor.getString(1);
                        show(showName,showPass);

            }

        }
    });

    bt_Next.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            Cursor cursor = myDb.getAllData();
            cursor.moveToNext();
            if(cursor!=null){
                showName = cursor.getString(0);
                showPass = cursor.getString(1);
                show(showName,showPass);
            }

        }
    });

 }

public void show(String n,String p){
    tv_Name.setText(n);
    tv_Password.setText(p);
}

}

EXCEPTION

9-16 13:56:09.939    9508-9514/? E/jdwp﹕ Failed sending reply to debugger: Broken pipe
09-16 13:56:19.679    9508-9508/com.test.anu.test E/AndroidRuntime﹕ FATAL EXCEPTION: main
    Process: com.test.anu.test, PID: 9508
    java.lang.NullPointerException
            at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:224)
            at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:164)
            at com.test.anu.test.DatabaseHelper.Insert(DatabaseHelper.java:39)
            at com.test.anu.test.MainActivity$1.onClick(MainActivity.java:36)
            at android.view.View.performClick(View.java:4438)
            at android.view.View$PerformClick.run(View.java:18422)
            at android.os.Handler.handleCallback(Handler.java:733)
            at android.os.Handler.dispatchMessage(Handler.java:95)
            at android.os.Looper.loop(Looper.java:136)
            at android.app.ActivityThread.main(ActivityThread.java:5001)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
            at dalvik.system.NativeStart.main(Native Method)

Upvotes: 2

Views: 82

Answers (2)

Arsal Imam
Arsal Imam

Reputation: 2982

Your problem is that, getBaseContext() returns null before onCreate() called, your activity should look like below,

public class MainActivity extends ActionBarActivity {

    DatabaseHelper myDb;
    EditText et_Username, et_Password;
    Button bt_Login;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        myDb = new DatabaseHelper(getBaseContext());
        //INITIALISING VIEWS
        et_Username = (EditText) findViewById(R.id.etUsername);
        et_Password = (EditText) findViewById(R.id.etPassword);
        bt_Login = (Button) findViewById(R.id.btLogin);

        //IMPLEMENTING ON CLICK LISTENER
        bt_Login.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String name,pass;
                name = et_Username.getText().toString();
                pass = et_Password.getText().toString();
                myDb.Insert(name, pass);
                Intent i = new Intent(MainActivity.this,DataActivity.class);
                startActivity(i);
            }
        });

    }
    }

Upvotes: 1

Deepak Goyal
Deepak Goyal

Reputation: 4907

Initialize your db class inside the oncreate method of Activity.

DatabaseHelper myDb = new DatabaseHelper(getBaseContext());

Upvotes: 0

Related Questions