如何在单击窗口小部件按钮时调用另一个活动中定义的"方法"?

ABc*_*ter 0 android android-widget

我知道如何使用待定意图启动单击窗口小部件按钮的活动,但我想启动该活动的特定方法.

noo*_*oob 6

如果您需要在另一个活动中调用方法,那么您将遵循错误的设计.您不应该仅将所有代码放在活动中.

为什么这是一个糟糕的选择 -
因为你需要一个类的对象来调用它的方法.你怎么会得到活动的对象?除非你将一个活动的对象存储到另一个活动中(这是一件非常混乱的事情).这种方法的另一个问题是你的其他活动可能已经被破坏了,所以如果你依赖于另一个活动的某些UI元素,那么你根本就没有任何帮助.使活动保持静态将为您打开一大堆蠕虫.

那么可用的选项是什么 -
有很多选项可用于进行交互活动方法调用,但我依赖于Singletons.它们是只能有一个对象的类,它们将被静态访问,所以你不必在任何地方存储类的对象,因为类本身存储对象.它可以像以下一样 -

public class AppManager{
  private static AppManager _instance = null;
  public static AppManager getInstance(){
    if(_instance == null)
      _instance= new AppManager();
    return _instance;
  }
  private AppManager(){} //Making the constructor private, so no 2 object can be created
  public void someMethod(){}
}
Run Code Online (Sandbox Code Playgroud)

因此,为了someMethod()从项目的任何地方打电话,您只需要打电话

AppManager.getInstance().someMethod();
Run Code Online (Sandbox Code Playgroud)

所以你的所有计算都是如此.您可以将当前活动的对象存储在Manager类中,也可以完全从Activity中抽象出功能,并可以更好地控制代码.当然,你可以拥有一个以上的单身人士课程.在我的项目中,我通常有近6-7个Singleton管理器来处理不同的任务.