Reputation: 696
I'm trying to use this code which is an example taken from here https://gist.github.com/2383248 , but it is coming up with a error on the public void onClick which is
Multiple markers at this line - implements android.view.View.OnClickListener.onClick - Syntax error, insert "}" to complete MethodBody, but when I add the brace it just throws another error after many tries and fails of different suggestions and ideas.
It may be a syntax error and bad coding from me (just started learning to program) but does anyone have any ideas how to resolve this or point me in the right direction I would be very grateful.
public class ICSCalendarActivity extends Activity implements View.OnClickListener{
Button button1;
int year1;
int month1;
int day1;
int ShiftPattern;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
button1 = (Button)findViewById(R.id.openButton);
button1.setText("open");
button1.setOnClickListener(this);
Bundle extras = getIntent().getExtras();
year1 = extras.getInt("year1");
day1 = extras.getInt("day1");
month1 = extras.getInt("month1");
ShiftPattern = extras.getInt("ShiftPattern");
}
public void onClick(View v){
private static void addToCalendar(Context ICSCalendarActivity, final String title, final long dtstart, final long dtend) {
final ContentResolver cr = ICSCalendarActivity.getContentResolver();
Cursor cursor ;
if (Integer.parseInt(Build.VERSION.SDK) >= 8 )
cursor = cr.query(Uri.parse("content://com.android.calendar/calendars"), new String[]{ "_id", "displayname" }, null, null, null);
else
cursor = cr.query(Uri.parse("content://calendar/calendars"), new String[]{ "_id", "displayname" }, null, null, null);
if ( cursor.moveToFirst() ) {
final String[] calNames = new String[cursor.getCount()];
final int[] calIds = new int[cursor.getCount()];
for (int i = 0; i < calNames.length; i++) {
calIds[i] = cursor.getInt(0);
calNames[i] = cursor.getString(1);
cursor.moveToNext();
}
AlertDialog.Builder builder = new AlertDialog.Builder(ICSCalendarActivity);
builder.setSingleChoiceItems(calNames, -1, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
ContentValues cv = new ContentValues();
cv.put("calendar_id", calIds[which]);
cv.put("title", title);
cv.put("dtstart", dtstart );
cv.put("hasAlarm", 1);
cv.put("dtend", dtend);
Uri newEvent ;
if (Integer.parseInt(Build.VERSION.SDK) >= 8 )
newEvent = cr.insert(Uri.parse("content://com.android.calendar/events"), cv);
else
newEvent = cr.insert(Uri.parse("content://calendar/events"), cv);
if (newEvent != null) {
long id = Long.parseLong( newEvent.getLastPathSegment() );
ContentValues values = new ContentValues();
values.put( "event_id", id );
values.put( "method", 1 );
values.put( "minutes", 15 ); // 15 minutes
if (Integer.parseInt(Build.VERSION.SDK) >= 8 )
cr.insert( Uri.parse( "content://com.android.calendar/reminders" ), values );
else
cr.insert( Uri.parse( "content://calendar/reminders" ), values );
}
dialog.cancel();
}
});
builder.create().show();
}
cursor.close();
} }
Thank you.
Upvotes: 0
Views: 204
Reputation: 6033
You cannot define a method inside another method. In your code you have definedaddToCalendar() method inside the onClick() method. Instead define the method outside and call it from the onClick() method.
public void onClick(View v)
{
addTocalender(context, string, longVal1, longVal2);
}
private static void addToCalendar(Context ICSCalendarActivity,
final String title, final long dtstart, final long dtend)
{
....
....
}
Upvotes: 0
Reputation: 16354
You cannot have a static
method definition addToCalendar
inside the onClick
function.
public class ICSCalendarActivity extends Activity implements View.OnClickListener{
Button button1;
int year1;
int month1;
int day1;
int ShiftPattern;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
button1 = (Button)findViewById(R.id.openButton);
button1.setText("open");
button1.setOnClickListener(this);
Bundle extras = getIntent().getExtras();
year1 = extras.getInt("year1");
day1 = extras.getInt("day1");
month1 = extras.getInt("month1");
ShiftPattern = extras.getInt("ShiftPattern");
}
public void onClick(View v){
addToCalendar(mContext, mString, mlong, mlong); // pass the parameters of the addToCalendar method here
}
private static void addToCalendar(Context ICSCalendarActivity, final String title, final long dtstart, final long dtend) {
final ContentResolver cr = ICSCalendarActivity.getContentResolver();
Cursor cursor ;
if (Integer.parseInt(Build.VERSION.SDK) >= 8 )
cursor = cr.query(Uri.parse("content://com.android.calendar/calendars"), new String[]{ "_id", "displayname" }, null, null, null);
else
cursor = cr.query(Uri.parse("content://calendar/calendars"), new String[]{ "_id", "displayname" }, null, null, null);
if ( cursor.moveToFirst() ) {
final String[] calNames = new String[cursor.getCount()];
final int[] calIds = new int[cursor.getCount()];
for (int i = 0; i < calNames.length; i++) {
calIds[i] = cursor.getInt(0);
calNames[i] = cursor.getString(1);
cursor.moveToNext();
}
AlertDialog.Builder builder = new AlertDialog.Builder(ICSCalendarActivity);
builder.setSingleChoiceItems(calNames, -1, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
ContentValues cv = new ContentValues();
cv.put("calendar_id", calIds[which]);
cv.put("title", title);
cv.put("dtstart", dtstart );
cv.put("hasAlarm", 1);
cv.put("dtend", dtend);
Uri newEvent ;
if (Integer.parseInt(Build.VERSION.SDK) >= 8 )
newEvent = cr.insert(Uri.parse("content://com.android.calendar/events"), cv);
else
newEvent = cr.insert(Uri.parse("content://calendar/events"), cv);
if (newEvent != null) {
long id = Long.parseLong( newEvent.getLastPathSegment() );
ContentValues values = new ContentValues();
values.put( "event_id", id );
values.put( "method", 1 );
values.put( "minutes", 15 ); // 15 minutes
if (Integer.parseInt(Build.VERSION.SDK) >= 8 )
cr.insert( Uri.parse( "content://com.android.calendar/reminders" ), values );
else
cr.insert( Uri.parse( "content://calendar/reminders" ), values );
}
dialog.cancel();
}
});
builder.create().show();
}
cursor.close();
}
Upvotes: 2