无法从java类外部调用方法
我在UpdateActivity.java中有一个方法名checkForUpdate。看起来是这样的:无法从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() {
@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活动。在继续学习之前,请先通过一些基本的训练。我正努力听从你的建议。如果成功,我会让你知道。你说得对,我缺少一些基本概念。