Android / Java - 如何在单独的* .java文件中调用函数?

时间:2010-08-16 19:22:38

标签: java android

我导入了完整的包名/ java文件,如果我执行了<classname>.<method>,有时我可以访问它 - 有时候我会得到很多can't use a static in a non static一堆谈话

我承认我是Java的新手,所以我需要做什么?先调用一个类实例,然后调用我的方法?我对此感到困惑,因为我想将所有'函数'放入一个FunctionsList.java文件中,并将所有主要的Activity(UI)放入MyActivity.java文件中。

例如:

<MyActivity.java>

import com.example.FunctionsList;

private class MyActivity extends Activity {
  FunctionsList.function();
}

9/10次我得到静态/非静态错误。

如果我将所有功能都放入MyActivity.java,我就没有问题了!任何人都可以帮助我,我认为这是一个基本的Java新手问题?

2 个答案:

答案 0 :(得分:14)

这是一个有希望帮助你的例子。

public class MyFunctionClass {

   public String myFunction() {
      return "This is an instance function.";
   }

   public static String myStaticFunction() {
      return "This is a static function.";
   }

}

然后在你的活动中,你有类似的东西。

public class MyActivity extends Activity {

   @Override
   public void onCreate() {

      // If you want to call your static function, you do not
      // require an instance of a MyFunctionClass object.
      String myStaticString = MyFunctionClass.myStaticFunction();

      // If you want to call your instance function, then you need
      // to create a MyFunctionClass first.
      MyFunctionClass variableName = new MyFunctionClass();
      String myInstanceString = variableName.myFunction();
   }
}

正如乔恩所说,如果你在潜水之前阅读面向对象的编程,你可能会省去一些挫败感。在潜入之前,新程序员需要了解一些基本的东西。祝你好运!

答案 1 :(得分:3)

如果要使用非静态方法,则必须具有该类的实例才能调用该方法。如果要使用静态方法,则不需要实例。

举个例子,假设你试图打电话给String.length() - 那会有什么回报呢?它试图找到某些东西的长度,但你没有指定你感兴趣的字符串。对于其他实例方法也是如此 - 结果通常会取决于你正在调用它们的对象,这就是为什么它们是实例方法的开始。

顺便说一句,我强烈建议您首先学习Java的基础知识,尝试使用Android之前。这样当你遇到真正棘手的问题时,你不必怀疑它是否是Android的一部分,或者它是否是一个简单的Java错误。有关此问题的更多建议,请参阅my answer on a related question