0

https://gist.github.com/2383248から抜粋した例であるこのコードを使用しようとしていますが、publicvoidonClickでエラーが発生しています。

この行の複数のマーカー-android.view.View.OnClickListener.onClickを実装します-構文エラー、「}」を挿入してMethodBodyを完成させますが、中括弧を追加すると、さまざまな提案やアイデアを何度も試行して失敗した後、別のエラーがスローされます。

構文エラーと私からの悪いコーディング(プログラミングを学び始めたばかり)かもしれませんが、これを解決する方法や正しい方向に私を向ける方法を誰かが知っていますか?私は非常に感謝しています。

 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();
}    }

ありがとうございました。

4

2 に答える 2

2

関数内にstaticメソッド定義を含めることはできません。addToCalendaronClick

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();
}  
于 2012-09-09T16:29:22.903 に答える
0

別のメソッド内にメソッドを定義することはできません。コードでは、onClick()メソッド内にaddToCalendar()メソッドを定義しました。代わりに、外部でメソッドを定義し、onClick()メソッドから呼び出します。

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)
{
 ....
 ....
}
于 2012-09-09T17:01:24.487 に答える