sasa

本文介绍了一个用于Android应用程序的抽象类Action,该类提供了一系列通用方法来简化Activity间的交互操作,如设置视图、获取共享偏好设置、显示对话框及导航至其他Action实例等。

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

package com.jleo;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.SharedPreferences;

public abstract class Action {
public void setActivity(Activity activity) {
this.activity = activity;
}

public void apply(Activity activity) {
apply(activity, null);
}

public void apply(Activity activity, Action precedentAction) {
apply(activity,precedentAction,true);
}

public void apply(Activity activity, Action precedentAction,boolean setContentView4Me) {
this.setActivity(activity);
this.precedentAction = precedentAction;
if(setContentView4Me)
activity.setContentView(getViewId());
apply();
}

public SharedPreferences getSharedPreferences(String preferenceName){
return activity.getSharedPreferences(preferenceName, 0);
}

abstract void apply();

public abstract int getViewId();

public abstract void unapply(Activity activity);

public <T> T findViewById(int id, Class<T> c) {
return c.cast(activity.findViewById(id));
}

public Context getApplicationContext() {
return activity.getApplicationContext();
}

public <T> T getSystemService(String locationService, Class<T> clazz) {
return (T) activity.getSystemService(locationService);
}

public void showDialog(int dialogId) {
activity.showDialog(dialogId);
}

public <T extends Action> void forward(Class<T> clazz, Action previousAction) {
previousAction.unapply(activity);
try {
clazz.newInstance().apply(activity, previousAction);
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
}
}

protected Activity activity;
protected Action precedentAction;

public void alert(int titleId) {
new AlertDialog.Builder(activity).setIcon(R.drawable.alert_dialog_icon)
.setTitle(titleId).setSingleChoiceItems(R.array.ok, 0,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int whichButton) {
dialog.dismiss();
}
}).show();
}

public void alert(String title) {
new AlertDialog.Builder(activity).setIcon(R.drawable.alert_dialog_icon)
.setTitle(title).setSingleChoiceItems(R.array.ok, 0,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int whichButton) {
dialog.dismiss();
}
}).show();
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值