android:在运行时动态转换方法

时间:2012-08-23 13:02:52

标签: android casting android-activity

鉴于代码:

public class CommandSequence {

public CommandSequence() {
}

public void startCommunications(View v) {
    Bundle dataout1 = new Bundle();
    dataout1.putInt("ACTION", Communications.ACTION_LOAD_COMMAND_ONLY);
    dataout1.putInt("PORT", Commands.MESSAGE_TYPE_SMC);
    dataout1.putInt("COMMAND", Commands.SMC_RESETEVENTSTATUS);
    ((MainActivity) v.getContext()).sendMessageToBackgroundCommunicationsService(
        Communications.MESSAGE_LOAD_COMMAND,
        dataout1);
}
}

我必须将'sendMessageToBackgroundCommunicationsService()'与调用活动上下文一起投射,即'MainActivity'。

是否可以传递一个允许我在运行时强制转换方法的参数,以便可以从任何活动类调用此方法?

1 个答案:

答案 0 :(得分:1)

为什么不创建一个基本活动类,让您的所有活动继承,然后在需要拨打电话时转换为此活动:

((MyBaseActivity) v.getContext()).sendMessageToBackgroundCommunicationsService(
    Communications.MESSAGE_LOAD_COMMAND,
    dataout1);

[编辑]事实上,为了让你的代码更好一点,你可以将活动传递给你的方法,这样你的类就不需要知道另一个类了。

public void startCommunications(View v, Class myActivity) {
 //your code
}