Code Fragment-同一层级的代码段封装成方法。

本文介绍了Android日历应用中事件创建、查看、编辑、删除等操作的具体实现方式。通过封装的方法来启动不同的活动,如选择可见日历、设置、创建事件等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

同一层级的代码段可以封装成方法,这样显示有一种层级美。

下面的是Android code:packages/apps/Calendar/src/com/android/calendar/CalendarController.java

private void launchSelectVisibleCalendars() {
    Intent intent = new Intent(Intent.ACTION_VIEW);
    intent.setClass(mContext, SelectVisibleCalendarsActivity.class);
    intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT | Intent.FLAG_ACTIVITY_SINGLE_TOP);
    mContext.startActivity(intent);
}

private void launchSettings() {
    Intent intent = new Intent(Intent.ACTION_VIEW);
    intent.setClass(mContext, CalendarSettingsActivity.class);
    intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT | Intent.FLAG_ACTIVITY_SINGLE_TOP);
    mContext.startActivity(intent);
}

private void launchCreateEvent(long startMillis, long endMillis, boolean allDayEvent) {
    Intent intent = new Intent(Intent.ACTION_VIEW);
    intent.setClass(mContext, EditEventActivity.class);
    intent.putExtra(EXTRA_EVENT_BEGIN_TIME, startMillis);
    intent.putExtra(EXTRA_EVENT_END_TIME, endMillis);
    intent.putExtra(EXTRA_EVENT_ALL_DAY, allDayEvent);
    mEventId = -1;
    mContext.startActivity(intent);
}

public void launchViewEvent(long eventId, long startMillis, long endMillis) {
    Intent intent = new Intent(Intent.ACTION_VIEW);
    Uri eventUri = ContentUris.withAppendedId(Events.CONTENT_URI, eventId);
    intent.setData(eventUri);
    intent.setClass(mContext, AllInOneActivity.class);
    intent.putExtra(EXTRA_EVENT_BEGIN_TIME, startMillis);
    intent.putExtra(EXTRA_EVENT_END_TIME, endMillis);
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    mContext.startActivity(intent);
}

private void launchEditEvent(long eventId, long startMillis, long endMillis, boolean edit) {
    Uri uri = ContentUris.withAppendedId(Events.CONTENT_URI, eventId);
    Intent intent = new Intent(Intent.ACTION_EDIT, uri);
    intent.putExtra(EXTRA_EVENT_BEGIN_TIME, startMillis);
    intent.putExtra(EXTRA_EVENT_END_TIME, endMillis);
    intent.setClass(mContext, EditEventActivity.class);
    intent.putExtra(EVENT_EDIT_ON_LAUNCH, edit);
    mEventId = eventId;
    mContext.startActivity(intent);
}

//    private void launchAlerts() {
//        Intent intent = new Intent();
//        intent.setClass(mContext, AlertActivity.class);
//        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
//        mContext.startActivity(intent);
//    }

private void launchDeleteEvent(long eventId, long startMillis, long endMillis) {
    launchDeleteEventAndFinish(null, eventId, startMillis, endMillis, -1);
}

private void launchDeleteEventAndFinish(Activity parentActivity, long eventId, long startMillis,
        long endMillis, int deleteWhich) {
    DeleteEventHelper deleteEventHelper = new DeleteEventHelper(mContext, parentActivity,
            parentActivity != null /* exit when done */);
    deleteEventHelper.delete(startMillis, endMillis, eventId, deleteWhich);
}

private void launchSearch(long eventId, String query, ComponentName componentName) {
    final SearchManager searchManager =
            (SearchManager)mContext.getSystemService(Context.SEARCH_SERVICE);
    final SearchableInfo searchableInfo = searchManager.getSearchableInfo(componentName);
    final Intent intent = new Intent(Intent.ACTION_SEARCH);
    intent.putExtra(SearchManager.QUERY, query);
    intent.setComponent(searchableInfo.getSearchActivity());
    intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
    mContext.startActivity(intent);
}
使用的地方

// Launch Settings
if (event.eventType == EventType.LAUNCH_SETTINGS) {
    launchSettings();
    return;
}

// Launch Calendar Visible Selector
if (event.eventType == EventType.LAUNCH_SELECT_VISIBLE_CALENDARS) {
    launchSelectVisibleCalendars();
    return;
}

// Create/View/Edit/Delete Event
long endTime = (event.endTime == null) ? -1 : event.endTime.toMillis(false);
if (event.eventType == EventType.CREATE_EVENT) {
    launchCreateEvent(event.startTime.toMillis(false), endTime,
        event.extraLong == EXTRA_CREATE_ALL_DAY);
    return;
} else if (event.eventType == EventType.VIEW_EVENT) {
    launchViewEvent(event.id, event.startTime.toMillis(false), endTime);
    return;
} else if (event.eventType == EventType.EDIT_EVENT) {
    launchEditEvent(event.id, event.startTime.toMillis(false), endTime, true);
    return;
} else if (event.eventType == EventType.VIEW_EVENT_DETAILS) {
    launchEditEvent(event.id, event.startTime.toMillis(false), endTime, false);
    return;
} else if (event.eventType == EventType.DELETE_EVENT) {
    launchDeleteEvent(event.id, event.startTime.toMillis(false), endTime);
    return;
} else if (event.eventType == EventType.SEARCH) {
    launchSearch(event.id, event.query, event.componentName);
    return;
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值