无法从java类外部调用方法

时间:2018-05-31 02:04:02

标签: java android methods call

我在UpdateActivity.java中有一个方法名称@NonNull @SuppressWarnings("deprecation") protected String checkForUpdate(int curVersionCode) { HttpClient httpclient = new DefaultHttpClient(); ... } 。它看起来像这样:

private void callFromAnotherActivity() {
  UpdateActivity updateApp = new UpdateActivity();
  String result = updateApp.checkForUpdate(...);
}

我试图从anotherActivity调用它。所以我正在尝试使用这样的代码:

updateApp.

因此,当我输入UpdateActivity.java时,会显示checkForUpdate()的方法列表,但没有SELECT id, count(*) FROM seat 方法。为什么呢?

2 个答案:

答案 0 :(得分:1)

  

所以我输入updateApp。然后出现UpdateActivity.java的方法列表,但没有checkForUpdate()方法。为什么呢?

这是因为您的方法不公开,可能无法导入UpdateActivity

请注意您无法通过调用以下内容创建活动:

UpdateActivity updateApp = new UpdateActivity();

您需要使用以下内容:

// context is your activity context.
Intent updateApp = new Intent(context, UpdateActivity.class);
context.startActivity(updateApp);

我的建议:

您需要从checkForUpdate移动UpdateActivity方法并将其设为util。因此,使用该方法的其他活动不会依赖并与UpdateActivity结合。将方法本地化为类似这样的实用程序类:

public class UpdateUtil {

  ...

  @NonNull
  @SuppressWarnings("deprecation")
  public static String checkForUpdate(int curVersionCode) {

    HttpClient httpclient = new DefaultHttpClient();
    ... 

  }
}

然后使用方法:

UpdateUtil.checkForUpdate(1);

如果您无法移动代码(例如,您不拥有代码的所有权),则可以执行以下操作:

  1. checkForUpdate设为静态方法
  2. 使用EventBus告诉UpdateActivity进行更新。

答案 1 :(得分:0)

您不应该创建活动类的实例。这是错误的。活动有ui,生命周期和活动由startActivity(intent)启动 点击此处:call a method in another Activity