如何从广播接收器中调用另一个类的非静态函数?

时间:2013-07-30 19:01:03

标签: android broadcastreceiver alarmmanager

我有一个带增量计数器的功能,当用户点击一个按钮时我会调用它。 我想在用户按下它时每秒调用此功能一个新按钮。 我使用了报警管理器并且工作正常。但是当我尝试从广播接收器调用此功能时给我错误,因为它不是静态的。我该怎么办?

public class MyStartServiceReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {

  Toast.makeText(context, "Send ....",Toast.LENGTH_LONG).show();

  //Intent service = new Intent(context, AlarmService.class);
      //context.startService(service);    
      //String msg = intent.getStringExtra("data");

  //String msg="data";

  a1class.function1();

}

public void function1(){

  counter++;
  //Toast.MakeText( counter );

}

2 个答案:

答案 0 :(得分:0)

如果要调用非静态方法,则需要该类的实例来调用它。

您可以创建一个返回实例的静态方法

private static ClassName instance;

public static ClassName getInstance(){
   if (instance == null){
      instance = new ClassName();
   }
   return instance;
}

您还可以在onCreate方法中设置实例。

答案 1 :(得分:0)

要么function1() static,要么假设a1class是其所在的类,请创建该类的实例并以此方式调用该函数

a1class a1class = new a1class();
a1class.function1();