Hi All,
I m a novice in Google Android.. Just started with couple of tutorials
present in Google Android Documentation page.
I have modified the NotePad application present there. I have four
textfields namely, employeeName,employeeAge,
employeeQualification, employeeDept.
I could insert a new record and delete an existing record, but i m
facing problem in editing an existing record. When i click a record it
says, the Application EmployeeInformation has stopped unexpectedly.
Here is my EmployeeInfo class
package com.dreamapp.employeeinfo.activity;
import android.app.ListActivity;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import com.dreamapp.employeeinfo.util.EmployeeDAO;
public class EmployeeInfo extends ListActivity {
private static final int ACTIVITY_CREATE =0;
private static final int ACTIVITY_EDIT =1;
private static final int INSERT_ID = Menu.FIRST;
private static final int DELETE_ID = Menu.FIRST+1;
private EmployeeDAO employee;
private Cursor mCursor;
private static final String TAG="EmployeeInfo";
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.employee_list);
employee = new EmployeeDAO(this);
employee.open();
fillData();
}
public void fillData(){
mCursor = employee.fetchAllEmployeeInformation();
startManagingCursor(mCursor);
String[] from = new String[] {EmployeeDAO.EMP_NAME};
int[] to = new int[] {R.id.text1};
SimpleCursorAdapter employeeList =
new SimpleCursorAdapter(this, R.layout.employee_row,
mCursor,from, to);
setListAdapter(employeeList);
}
public boolean onCreateOptionsMenu(Menu menu){
super.onCreateOptionsMenu(menu);
menu.add(0, INSERT_ID, 0, R.string.menu_insert);
menu.add(0, DELETE_ID, 0, R.string.menu_delete);
return true;
}
public boolean onMenuItemSelected(int featureId, MenuItem item){
switch(item.getItemId()){
case INSERT_ID:
insertEmployeeInformation();
return true;
case DELETE_ID:
employee.deleteEmployeenformation(getListView().
getSelectedItemId());
fillData();
return true;
}
return super.onMenuItemSelected(featureId, item);
}
public void insertEmployeeInformation(){
Intent i = new Intent(this,EmployeeEdit.class);
startActivityForResult(i, ACTIVITY_CREATE);
}
protected void onListItemClick(ListView l, View v, int position,
long id){
super.onListItemClick(l, v, position, id);
Cursor c = mCursor;
Log.w(TAG, "Position in the List "+position);
c.moveToPosition(position);
Intent i = new Intent(this,EmployeeEdit.class);
i.putExtra(EmployeeDAO.KEY_ROW_ID, id);
i.putExtra(EmployeeDAO.EMP_NAME, c.getString(
c.getColumnIndexOrThrow(EmployeeDAO.EMP_NAME)));
i.putExtra(EmployeeDAO.EMP_AGE, id);
i.putExtra(EmployeeDAO.EMP_QUALIFICATION, c.getInt(
c.getColumnIndexOrThrow(EmployeeDAO.EMP_QUALIFICATION)));
i.putExtra(EmployeeDAO.EMP_QUALIFICATION, c.getString(
c.getColumnIndexOrThrow(EmployeeDAO.EMP_QUALIFICATION)));
i.putExtra(EmployeeDAO.EMP_DEPT, c.getString(
c.getColumnIndexOrThrow(EmployeeDAO.EMP_DEPT)));
startActivityForResult(i, ACTIVITY_EDIT);
}
protected void onActivityResult(int requestCode, int resultCode,
Intent intent){
super.onActivityResult(requestCode, resultCode, intent);
Bundle extras = intent.getExtras();
switch(requestCode){
case ACTIVITY_CREATE:
String employeeName =
extras.getString(EmployeeDAO.EMP_NAME);
int employeeAge = extras.getInt(EmployeeDAO.EMP_NAME);
String employeeQualification =
extras.getString(EmployeeDAO.EMP_QUALIFICATION);
String employeeDept =
extras.getString(EmployeeDAO.EMP_DEPT);
employee.insertEmployeeInformation(employeeName,
employeeAge,
employeeQualification, employeeDept);
fillData();
break;
case ACTIVITY_EDIT:
Long rowId = extras.getLong(EmployeeDAO.KEY_ROW_ID);
if(rowId != null){
String updateEmployeeName =
extras.getString(EmployeeDAO.EMP_NAME);
int updateEmployeeAge =
extras.getInt(EmployeeDAO.EMP_NAME);
String updateEmployeeQualification =
extras.getString(EmployeeDAO.EMP_QUALIFICATION);
String updateEmployeeDept =
extras.getString(EmployeeDAO.EMP_DEPT);
employee.updateEmployeeInformation(rowId,
updateEmployeeName,
updateEmployeeAge,
updateEmployeeQualification,
updateEmployeeDept);
fillData();
break;
}
}
}
}
and My EmployeeEdit class
package com.dreamapp.employeeinfo.activity;
import com.dreamapp.employeeinfo.util.EmployeeDAO;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.util.Log;
public class EmployeeEdit extends Activity {
public EditText mEmployeeName;
public EditText mEmployeeAge;
public EditText mEmployeeQualification;
public EditText mEmployeeDept;
public Long mRowId;
public static final String TAG = "EmployeeEdit";
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.employee_edit);
Log.w(TAG, "OnCreate Method in EmployeeEdit Class");
mEmployeeName = (EditText) findViewById(R.id.name);
mEmployeeAge = (EditText) findViewById(R.id.age);
mEmployeeQualification = (EditText)
findViewById(R.id.qualification);
mEmployeeDept = (EditText) findViewById(R.id.dept);
Button confirmButton = (Button)
findViewById(R.id.confirm);
mRowId = null;
Bundle extras = getIntent().getExtras();
if(extras !=null){
String name =
extras.getString(EmployeeDAO.EMP_NAME);
int age = extras.getInt(EmployeeDAO.EMP_AGE);
String qualification =
extras.getString(EmployeeDAO.EMP_QUALIFICATION);
String dept =
extras.getString(EmployeeDAO.EMP_DEPT);
mEmployeeName.setText(name);
mEmployeeAge.setText(age);
mEmployeeQualification.setText(qualification);
mEmployeeDept.setText(dept);
Log.w(TAG, "Preparing the View");
}
confirmButton.setOnClickListener(new
View.OnClickListener(){
public void onClick(View v) {
Log.w(TAG, "OnClick Button Listener");
Bundle bundle = new Bundle();
bundle.putString(EmployeeDAO.EMP_NAME,
mEmployeeName.getText().toString());
bundle.putString(EmployeeDAO.EMP_AGE,
mEmployeeAge.getText().toString());
bundle.putString(EmployeeDAO.EMP_QUALIFICATION,
mEmployeeQualification.getText().toString());
bundle.putString(EmployeeDAO.EMP_DEPT,
mEmployeeDept.getText().toString());
Log.w(TAG, "Values Present in Bundle"+bundle);
if (mRowId != null) {
bundle.putLong(EmployeeDAO.KEY_ROW_ID, mRowId);
}
Intent mIntent = new Intent();
mIntent.putExtras(bundle);
setResult(RESULT_OK, mIntent);
finish();
}
} );
}
}
and finally my EmployeeDAO class
/*
* This class Primarily takes care of Inserting, Updating and
Selecting
* and Deleting an Employee information. Basic CRUD operations are
* covered here
* @author Sabari
*/
package com.dreamapp.employeeinfo.util;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
public class EmployeeDAO {
public static final String EMP_NAME = "employeeName";
public static final String EMP_AGE = "employeeAge";
public static final String EMP_QUALIFICATION =
"employeeQualification";
public static final String EMP_DEPT = "employeeDept";
public static final String KEY_ROW_ID = "_id";
private static final String TAG="EmployeeDAO";
private DatabaseHelper mDbHelper;
private SQLiteDatabase mDb;
/*
* Variables needed for Database
*
*/
private static final String DATABASE_CREATE =
"create table employeeMaster (_id integer primary key
autoincrement, "
+ "employeeName text not null, employeeAge int not null," +
"employeeQualification text not null, employeeDept text not
null);";
private static final String DATABASE_NAME = "data";
private static final String DATABASE_TABLE = "employeeMaster";
private static final int DATABASE_VERSION = 2;
private final Context mCtx;
private static class DatabaseHelper extends SQLiteOpenHelper{
DatabaseHelper(Context context){
super(context, DATABASE_NAME, null,
DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(DATABASE_CREATE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int
oldVersion, int
newVersion) {
Log.w(TAG, "Upgrading database from version " +
oldVersion + " to "
+ newVersion + ", which will destroy all old
data");
db.execSQL("DROP TABLE IF EXISTS
employeeMaster");
}
}
public EmployeeDAO(Context ctx){
this.mCtx = ctx;
}
public EmployeeDAO open() throws SQLException{
mDbHelper = new DatabaseHelper(mCtx);
mDb = mDbHelper.getWritableDatabase();
return this;
}
public void close(){
mDbHelper.close();
}
public long insertEmployeeInformation(String employeeName, int
employeeAge,
String employeeQualification,String
employeeDept){
ContentValues initiaValues = new ContentValues();
initiaValues.put(EMP_NAME, employeeName);
initiaValues.put(EMP_AGE, employeeAge);
initiaValues.put(EMP_QUALIFICATION,
employeeQualification);
initiaValues.put(EMP_DEPT, employeeDept);
Log.w(TAG, " Values Before Inserting an Employee
Information" +
initiaValues);
return mDb.insert(DATABASE_TABLE, null, initiaValues);
}
public boolean deleteEmployeenformation(long rowId){
Log.w(TAG, "Deleting this Employee Information "+
rowId);
return mDb.delete(DATABASE_TABLE, KEY_ROW_ID + "=" +
rowId , null) >
0;
}
public Cursor fetchAllEmployeeInformation(){
Log.w(TAG, "Fetching all EmployeeInformation from DB");
return mDb.query(DATABASE_TABLE, new String[]
{KEY_ROW_ID,EMP_NAME,
EMP_AGE,EMP_QUALIFICATION,EMP_DEPT},
null, null, null, null,
null);
}
public Cursor fetchEmployeeInformation(long rowId){
Cursor mCursor =
mDb.query(DATABASE_TABLE, new
String[] {KEY_ROW_ID,EMP_NAME,
EMP_AGE,EMP_QUALIFICATION,EMP_DEPT}, KEY_ROW_ID + "=" +
rowId,null, null, null, null,
null);
if(mCursor!= null){
mCursor.moveToFirst();
}
return mCursor;
}
public boolean updateEmployeeInformation(long rowId, String
employeeName,
int employeeAge, String employeeQualification,
String employeeDept)
{
ContentValues updateValues = new ContentValues();
updateValues.put(EMP_NAME, employeeName);
updateValues.put(EMP_AGE, employeeAge);
updateValues.put(EMP_QUALIFICATION,
employeeQualification);
updateValues.put(EMP_DEPT, employeeDept);
Log.w(TAG, "Updating this Information "+updateValues);
return mDb.update(DATABASE_TABLE, updateValues ,
KEY_ROW_ID + "=" +
rowId , null) > 0;
}
}
and one more thing is i have added many logger statements throughout
my application, but these aren`t getting printed on Anroid Console. Is
there any other technique to print these debuggigng statements.
Log.w(TAG, "Position in the List "+position);
Any help for the above mentioned issue is highly appreciated...
Thanks in Advance
Thanks
JavaAndroid
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
-~----------~----~----~----~------~----~------~--~---