Hi I am new to Android Development. I have created this activity it seems like every time I click on one of the buttons in this activity. I Keep getting the Could not execute Method of the Activity LogCat error.
Here is my Activity Java File
public class Add_Edit_Cows extends Activity {
Button cradd, credit, crdelete, crview;
EditText cowids, sire, dam, months, dates, years;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_add__edit__cows);
cradd = (Button) findViewById(R.id.addcow);
cowids = (EditText) findViewById(R.id.cowid);
sire = (EditText) findViewById(R.id.sire);
dam = (EditText) findViewById(R.id.dam);
months = (EditText) findViewById(R.id.DOBM);
dates = (EditText) findViewById(R.id.DOBd);
years = (EditText) findViewById(R.id.DOBy);
credit = (Button) findViewById(R.id.editcow);
crdelete = (Button) findViewById(R.id.removecow);
crview = (Button) findViewById(R.id.viewcows);
}
public void addcow (View view) {
Cowsdatabase cowsdb = new Cowsdatabase(this, null, null, 1);
int Cown = Integer.parseInt(cowids.getText().toString());
String Sire = sire.getText().toString();
String Dam = dam.getText().toString();
int Month = Integer.parseInt(months.getText().toString());
int Date = Integer.parseInt(dates.getText().toString());
int Year = Integer.parseInt(years.getText().toString());
cow Cow = new cow(Integer.parseInt(cowids.getText().toString()), Sire, Dam, Month, Date, Year);
cowsdb.addcow(Cow);
cowids.setText("");
sire.setText("");
dam.setText("");
months.setText("");
dates.setText("");
years.setText("");
}
public void editcow(View view) {
Cowsdatabase cowsdb = new Cowsdatabase(this, null, null, 1);
cow Cow =
cowsdb.findcow(Integer.parseInt(cowids.getText().toString()));
if (Cow != null) {
sire.setText(String.valueOf(Cow.getSire()));
dam.setText(String.valueOf(Cow.getDam()));
months.setText(String.valueOf(Cow.getMonth()));
dates.setText(String.valueOf(Cow.getDate()));
years.setText(String.valueOf(Cow.getYear()));
} else {
cowids.setText("No Match Found");
}
}
public void dcow (View view) {
Cowsdatabase cowsdb = new Cowsdatabase(this, null, null, 1);
boolean result = cowsdb.deleteCow(Integer.parseInt(cowids.getText().toString()));
if (result)
{
cowids.setText("Record Deleted");
sire.setText("");
dam.setText("");
months.setText("");
dates.setText("");
years.setText("");
}
else
cowids.setText("No Match Found");
}
public void viewcow (View view){
startActivity(new Intent("Ag.Access.Viewcows"));
}
}
The LogCat Error Message:
10-15 20:02:51.735: E/AndroidRuntime(7738): FATAL EXCEPTION: main
10-15 20:02:51.735: E/AndroidRuntime(7738): java.lang.IllegalStateException: Could not execute method of the activity
10-15 20:02:51.735: E/AndroidRuntime(7738): at android.view.View$1.onClick(View.java:3591)
10-15 20:02:51.735: E/AndroidRuntime(7738): at android.view.View.performClick(View.java:4084)
10-15 20:02:51.735: E/AndroidRuntime(7738): at android.view.View$PerformClick.run(View.java:16966)
10-15 20:02:51.735: E/AndroidRuntime(7738): at android.os.Handler.handleCallback(Handler.java:615)
10-15 20:02:51.735: E/AndroidRuntime(7738): at android.os.Handler.dispatchMessage(Handler.java:92)
10-15 20:02:51.735: E/AndroidRuntime(7738): at android.os.Looper.loop(Looper.java:137)
10-15 20:02:51.735: E/AndroidRuntime(7738): at android.app.ActivityThread.main(ActivityThread.java:4745)
10-15 20:02:51.735: E/AndroidRuntime(7738): at java.lang.reflect.Method.invokeNative(Native Method)
10-15 20:02:51.735: E/AndroidRuntime(7738): at java.lang.reflect.Method.invoke(Method.java:511)
10-15 20:02:51.735: E/AndroidRuntime(7738): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
10-15 20:02:51.735: E/AndroidRuntime(7738): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
10-15 20:02:51.735: E/AndroidRuntime(7738): at dalvik.system.NativeStart.main(Native Method)
10-15 20:02:51.735: E/AndroidRuntime(7738): Caused by: java.lang.reflect.InvocationTargetException
10-15 20:02:51.735: E/AndroidRuntime(7738): at java.lang.reflect.Method.invokeNative(Native Method)
10-15 20:02:51.735: E/AndroidRuntime(7738): at java.lang.reflect.Method.invoke(Method.java:511)
10-15 20:02:51.735: E/AndroidRuntime(7738): at android.view.View$1.onClick(View.java:3586)
10-15 20:02:51.735: E/AndroidRuntime(7738): ... 11 more
10-15 20:02:51.735: E/AndroidRuntime(7738): Caused by: java.lang.NullPointerException
10-15 20:02:51.735: E/AndroidRuntime(7738): at ag.access.cowsdb.Cowsdatabase.addcow(Cowsdatabase.java:64)
10-15 20:02:51.735: E/AndroidRuntime(7738): at ag.access.Add_Edit_Cows.addcow(Add_Edit_Cows.java:48)
10-15 20:02:51.735: E/AndroidRuntime(7738): ... 14 more
My XML File:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="ag.access"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="18" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name`"`enter code here`
android:theme="@style/AppTheme" >
<activity
android:name="ag.access.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="ag.access.Farming"
android:label="@string/title_activity_farming"
android:parentActivityName="ag.access.MainActivity" >
<intent-filter>
<action android:name="ag.access.Farming" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="ag.access.MainActivity" />
</activity>
<activity
android:name="ag.access.Dairy"
android:label="@string/title_activity_dairy"
android:parentActivityName="ag.access.MainActivity" >
<intent-filter>
<action android:name="ag.access.Dairy" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="ag.access.MainActivity" />
</activity>
<activity
android:name="ag.access.Daily_log"
android:label="@string/title_activity_daily_log"
android:parentActivityName="ag.access.Dairy" >
<intent-filter>
<action android:name="ag.access.Daily_log" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="ag.access.Dairy" />
</activity>
<activity
android:name="ag.access.Viewlogs"
android:label="@string/title_activity_viewlogs"
android:parentActivityName="ag.access.Daily_log" >
<intent-filter>
<action android:name="ag.access.Viewlogs" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="ag.access.Daily_log" />
</activity>
<activity
android:name="ag.access.Add_Edit_Cows"
android:label="@string/title_activity_add__edit__cows"
android:parentActivityName="ag.access.Dairy" >
<intent-filter>
<action android:name="ag.access.Add_Edit_Cows" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="ag.access.Dairy" />
</activity>
<activity
android:name="ag.access.Viewcows"
android:label="@string/title_activity_viewcows"
android:parentActivityName="ag.access.Add_Edit_Cows" >
<intent-filter>
<action android:name="ag.access.Viewcows" /
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="ag.access.Add_Edit_Cows" />
</activity>
</application>
</manifest>
MY Add_Edit_Cows activity
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
tools:context=".Add_Edit_Cows" >
<TextView
android:id="@+id/textView1"
android:layout_width="280dp"
android:layout_height="wrap_content"
android:text="Add Edit Delete Cows"
android:textAppearance="?android:attr/textAppearanceLarge" />
<EditText
android:id="@+id/cowid"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="number"
android:hint="@string/cowid" />
<EditText
android:id="@+id/sire"
android:layout_width="280dp"
android:layout_height="wrap_content"
android:inputType="text"
android:hint="@string/sire"/>
<EditText
android:id="@+id/dam"
android:layout_width="280dp"
android:layout_height="wrap_content"
android:inputType="text"
android:hint="@string/dam"/>
<EditText
android:id="@+id/DOBM"
android:layout_width="280dp"
android:layout_height="wrap_content"
android:inputType="number"
android:hint="@string/DOBM"/>
<EditText
android:id="@+id/DOBd"
android:layout_width="280dp"
android:layout_height="wrap_content"
android:inputType="number"
android:hint="@string/DOBD"/>
<EditText
android:id="@+id/DOBy"
android:layout_width="280dp"
android:layout_height="wrap_content"
android:inputType="number"
android:hint="@string/DOBY"/>
<Button
android:id="@+id/addcow"
android:layout_width="261dp"
android:layout_height="wrap_content"
android:onClick="addcow"
android:text="@string/baddcow" />
<Button
android:id="@+id/editcow"
android:layout_width="261dp"
android:layout_height="wrap_content"
android:onClick="editcow"
android:text="@string/editcow" />
<Button
android:id="@+id/removecow"
android:layout_width="261dp"
android:layout_height="wrap_content"
android:onClick="dcow"
android:text="@string/deletecow" />
<Button
android:id="@+id/viewcows"
android:layout_width="261dp"
android:layout_height="wrap_content"
android:onClick="viewcow"
android:text="@string/viewc" />
</LinearLayout>
</ScrollView>
Cowsdatabase.java
package ag.access.cowsdb;
import ag.access.cowsdb.provider.Cows_Provider;
import android.content.ContentResolver;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
public class Cowsdatabase extends SQLiteOpenHelper {
private ContentResolver cowcr;
public Cowsdatabase(Context context, String name, CursorFactory factory,
int version) {
super(context, name, factory, version);
// TODO Auto-generated constructor stub
}
public static final String Key_id = "_id";
public static final String Key_Cow = "Cowid";
public static final String Key_Sire = "Sire";
public static final String Key_Dam = "Dam";
public static final String Key_DOBM = "Month";
public static final String Key_DOBD = "Date";
public static final String Key_DOBY = "Year";
private static final String DATABASE_NAME = "CowsDB";
public static final String DATABASE_TABLE = "Cows";
private static final int DATABASE_VERSION = 1;
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
String Create_Cows_Table = "CREATE TABLE" +
DATABASE_TABLE + "(" +
Key_id + "INTEGER PRIMARY KEY AUTOINCREMENT," +
Key_Cow + "INTEGER NOT NULL" +
Key_Sire + "TEXT NOT NULL," +
Key_Dam + "TEXT NOT NULL," +
Key_DOBM + "INTEGER NOT NULL," +
Key_DOBD + "INTEGER NOT NULL," +
Key_DOBY + "INTEGER NOT NULL," + ")";
db.execSQL(Create_Cows_Table);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
db.execSQL("DROP TABLE IF EXIST " + DATABASE_TABLE);
}
public void addcow(cow Cow) {
ContentValues values = new ContentValues();
values.put(Key_Cow, Cow.getCowid());
values.put(Key_Sire, Cow.getSire());
values.put(Key_Dam, Cow.getDam());
values.put(Key_DOBM, Cow.getMonth());
values.put(Key_DOBD, Cow.getDate());
values.put(Key_DOBY, Cow.getYear());
cowcr.insert(Cows_Provider.Content_Uri, values);
}
public cow findcow(int cowid) {
String[] projection = {Key_id, Key_Cow, Key_Sire, Key_Dam, Key_DOBM, Key_DOBD, Key_DOBY};
String selection = "cowid = \"" + cowid + "\"";
Cursor cursor = cowcr.query(Cows_Provider.Content_Uri, projection, selection, null, null);
cow cow = new cow();
if (cursor.moveToFirst()) {
cursor.moveToFirst();
cow.Setid(Integer.parseInt(cursor.getString(0)));
cow.SetCowid(Integer.parseInt(cursor.getString(1)));
cow.setSire(cursor.getString(2));
cow.setDam(cursor.getString(3));
cow.setMonth(Integer.parseInt(cursor.getString(4)));
cow.setDate(Integer.parseInt(cursor.getString(5)));
cow.setYear(Integer.parseInt(cursor.getString(6)));
cursor.close();
} else {
cow = null;
}
return cow;
}
public boolean deleteCow (int cowid) {
boolean result = false;
String selection = "cowid = \"" + cowid + "\"";
int rowsDeleted = cowcr.delete(Cows_Provider.Content_Uri, selection, null);
if (rowsDeleted > 0)
result = true;
return result;
}
}
For the cradd button I want it add the values from the edittexts to my database which in turn is received by my Content Provider For the credit button I want to be able to edit the cows in the Database. For the crdelete button I want to be able delete that database entry. For the Crview i want it to take to another activity to be able to view the content Provider.
Like I said earlier all thoughs buttons are coming up with the "could not execute method of the activity" LOGCAT error.
Your Help would be appreciated.
Thanks
The error is coming from Cowsdatabase.java
on line 64.
I presume it's somewhere in this block:
int Cown = Integer.parseInt(cowids.getText().toString());
String Sire = sire.getText().toString();
String Dam = dam.getText().toString();
int Month = Integer.parseInt(months.getText().toString());
int Date = Integer.parseInt(dates.getText().toString());
int Year = Integer.parseInt(years.getText().toString());
Because it's a NullPointerException
, we can make the assumption that one of the variable.getText()
executions returns null
. If this is true, the following toString()
would trigger the exception.
Using a debugger would make this very clear.