J4C3N-14
J4C3N-14

Reputation: 696

Problems with this code?

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

Answers (2)

karn
karn

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

Swayam
Swayam

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

Related Questions