Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/185.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法从java类外部调用方法_Java_Android_Methods_Call - Fatal编程技术网

无法从java类外部调用方法

无法从java类外部调用方法,java,android,methods,call,Java,Android,Methods,Call,我在UpdateActivity.java中有一个方法名checkForUpdate。看起来是这样的: @NonNull @SuppressWarnings("deprecation") protected String checkForUpdate(int curVersionCode) { HttpClient httpclient = new DefaultHttpClient(); ... } private void callFromAnotherActivity() {

我在UpdateActivity.java中有一个方法名checkForUpdate。看起来是这样的:

@NonNull
@SuppressWarnings("deprecation")
protected String checkForUpdate(int curVersionCode) {
  HttpClient httpclient = new DefaultHttpClient();
  ... 
}
private void callFromAnotherActivity() {
  UpdateActivity updateApp = new UpdateActivity();
  String result = updateApp.checkForUpdate(...);
}
// context is your activity context.
Intent updateApp = new Intent(context, UpdateActivity.class);
context.startActivity(updateApp);
public class UpdateUtil {

  ...

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

    HttpClient httpclient = new DefaultHttpClient();
    ... 

  }
}
我正试图从另一个活动中调用它。所以我尝试使用如下代码:

@NonNull
@SuppressWarnings("deprecation")
protected String checkForUpdate(int curVersionCode) {
  HttpClient httpclient = new DefaultHttpClient();
  ... 
}
private void callFromAnotherActivity() {
  UpdateActivity updateApp = new UpdateActivity();
  String result = updateApp.checkForUpdate(...);
}
// context is your activity context.
Intent updateApp = new Intent(context, UpdateActivity.class);
context.startActivity(updateApp);
public class UpdateUtil {

  ...

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

    HttpClient httpclient = new DefaultHttpClient();
    ... 

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

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

这是因为您的方法不是公共的,并且您可能还没有导入UpdateActivity

请注意,您不能通过调用以下命令来创建活动:

UpdateActivity updateApp = new UpdateActivity();
您需要使用以下内容:

@NonNull
@SuppressWarnings("deprecation")
protected String checkForUpdate(int curVersionCode) {
  HttpClient httpclient = new DefaultHttpClient();
  ... 
}
private void callFromAnotherActivity() {
  UpdateActivity updateApp = new UpdateActivity();
  String result = updateApp.checkForUpdate(...);
}
// context is your activity context.
Intent updateApp = new Intent(context, UpdateActivity.class);
context.startActivity(updateApp);
public class UpdateUtil {

  ...

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

    HttpClient httpclient = new DefaultHttpClient();
    ... 

  }
}
我的建议是:

您需要将checkForUpdate方法从UpdateActivity移动,并将其作为一个util。因此,使用该方法的其他活动将不依赖于UpdateActivity并与之耦合。将方法本地化为实用程序类,如下所示:

@NonNull
@SuppressWarnings("deprecation")
protected String checkForUpdate(int curVersionCode) {
  HttpClient httpclient = new DefaultHttpClient();
  ... 
}
private void callFromAnotherActivity() {
  UpdateActivity updateApp = new UpdateActivity();
  String result = updateApp.checkForUpdate(...);
}
// context is your activity context.
Intent updateApp = new Intent(context, UpdateActivity.class);
context.startActivity(updateApp);
public class UpdateUtil {

  ...

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

    HttpClient httpclient = new DefaultHttpClient();
    ... 

  }
}
然后将该方法用于:

UpdateUtil.checkForUpdate(1);
如果您不能移动代码,例如,您没有代码的所有权,您可以执行以下操作:

将checkForUpdate设置为静态方法 使用EventBus通知UpdateActivity执行更新。
不应创建活动类的实例。这是错误的。活动具有ui和生命周期,活动由StartActivityContent启动
检查此处:

首先,这不是使用活动的正确方式。您的两个活动都在同一个包中?是的,它们在同一个包中。您可以共享在firstActivity中编写的更多代码吗?这将不起作用,而且确实不应该,因为您不希望创建新的UpdateActivity活动只是为了使用希望重用的方法。像checkForUpdate这样的方法如果要可重用的话,就值得拥有自己的类。看起来您缺少Java和Android的基础知识,比如Java访问修饰符和Android活动。在继续学习之前,请先通过一些基本的训练。我正努力听从你的建议。如果成功,我会让你知道。你说得对,我缺少一些基本概念。