从活动

时间:2015-11-17 22:35:41

标签: java android android-activity

我想调用一个在Activity中声明的方法。此方法在更多活动中声明,但有不同的工作要做。我也有一个简单的java类,我想从当前的活动中调用这个方法。 所以我需要一种从当前活动而不是从某个活动调用此方法的方法。有什么办法吗?我已经尝试将当前Activity的上下文和活动提供给类,但我不知道如何操作它。我想这样的事情:

Actitvity:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Todo t = new Todo(this,this);
}

public void example(){
    //here do something
}

Java类:

public class Todo {

Context context;
Activity activity;

public Todo(Context context,Activity activity){
    this.context = context;
    this.activity = activity;
}
public void eventhere(){
    activity.example();
}
}

1 个答案:

答案 0 :(得分:0)

我希望你的例子过于简化,因为你的Activity正在创建一个Todo类的实例,只是为了它可以调用一个调用Activity类中的方法的方法。

这将完全等同于仅调用它自己的方法的Activity,并完全保留Todo对象。

所以,也许如果你更详细地解释你正在尝试做什么,我们可以指出你正确的方向。

但是,我会猜一猜。看起来您可能正在尝试实现命令模式,您的Todo对象充当命令。 也许您想在其他地方创建这些命令,并在以后执行它们?

我认为一种有趣的方法是使用消息总线。 例如,Todo的不同子类可以在“执行”时在总线上放置不同的“消息”对象。然后,活动可以订阅总线,并通过调用适当的方法来响应总线消息。

这种模式会使事物松散耦合。 Todo对象不需要了解特定的Activity子类,而且Activity不需要知道Todo对象。唯一的共同点是总线和总线上的消息。