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

Android/Java-如何在单独的*.Java文件中调用函数?,java,android,Java,Android,我导入了完整的包名/java文件,如果我做了一个,有时我可以访问它-其他时候我得到很多不能在一堆非静态的谈话中使用静态的 我承认我是Java新手,那么我需要做什么呢?先调用类实例,然后调用我的方法?我对此感到相当困惑,因为我想把我所有的“函数”放在FunctionsList.java文件中,把我所有的主要活动(UI)放在MyActivity.java文件中 例如: <MyActivity.java> import com.example.FunctionsList; privat

我导入了完整的包名/java文件,如果我做了一个
,有时我可以访问它-其他时候我得到很多
不能在一堆非静态的
谈话中使用静态的

我承认我是Java新手,那么我需要做什么呢?先调用类实例,然后调用我的方法?我对此感到相当困惑,因为我想把我所有的“函数”放在FunctionsList.java文件中,把我所有的主要活动(UI)放在MyActivity.java文件中

例如:

<MyActivity.java>

import com.example.FunctionsList;

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

导入com.example.functions列表;
私有类MyActivity扩展了活动{
FunctionsList.function();
}
9/10次我得到静态/非静态错误


如果我把所有的函数都放到MyActivity.java中,我就没有问题了!有人能帮我解决一个基本的Java新手问题吗?

如果你想使用一个非静态方法,你必须有一个类的实例来调用这个方法。如果要使用静态方法,则不需要实例

例如,假设您试图调用
String.length()
——会返回什么?它试图找到某个字符串的长度,但您尚未指定您感兴趣的字符串。其他实例方法也是如此——结果通常取决于调用它们的对象,这就是为什么它们首先是实例方法


另外,我强烈建议您在尝试使用Android之前,先学习Java的基础知识。这样,当您遇到真正棘手的问题时,您就不必怀疑它是Android的一部分还是一个简单的Java错误。有关这方面的更多建议,请参阅。

这里有一个示例,希望能对您有所帮助

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();
   }
}

正如Jon所提到的,如果你在开始之前阅读了面向对象编程的知识,你可能会省去一些挫折感。有一些基本的东西,一个新的程序员将需要了解之前,潜水。祝你好运

发布代码可以帮助社区帮助你解决这个问题我认为你应该读一下面向对象编程我有很强的程序背景,我已经有十年没有编程了。。。所以,我正在以我一直以来学习得最好的方式学习——头朝下跳水!这很好,但是你仍然缺少基本的面向对象的概念。我知道你来自哪里,但我觉得我已经掌握了大部分的基本知识。我已经编写了两个完整的Android应用程序,它们完全符合我的期望——但是所有的函数都包含在一个Activity.java文件中,这让我很难理解。我有一种强烈的感觉,问题仅仅是我缺乏完整OOP模式的经验,所以我需要更多地了解OOP是如何运行的。@John:好吧,我认为这是Java中需要理解的最基本的东西之一,所以我的建议仍然是。我建议你也在控制台应用程序中探索OOP。。。这比在手机模拟器中容易多了。@John还请注意,Java作为一种语言,几乎迫使您以面向对象的方式构造代码。你可以尝试与之抗争,但这只会让你的生活变得困难。与C++或Python不同,java在支持多个编程范例(无论好坏)方面都非常有限。只是开始用Python玩(顺便说一下)——所以我正在努力提高我的OOP技能。Jon,我一开始是在控制台模式下工作的,但我发现我可以更轻松地直接在手机上/在Eclipse上使用DDMS来判断发生了什么。不过,谢谢!确切地这正是我所需要的!这就是让我困惑的地方,因为我不明白为什么我必须首先创建MyFunctionClass。因此,我应该能够在Activity.java中将MyFunctionClass作为全局函数调用,然后通过(使用您的符号)variableName.myFunction传递任何公共函数。谢谢,班级结构现在对我来说更有意义了!很高兴能帮上忙。不过,对于一个充满静态函数的类,请注意(如果你决定将来要这样做):一定要考虑将同步修饰符添加到函数声明中。如果同时从不同线程调用静态函数,则可能会遇到问题。再次祝你的项目好运。如果我的UI要以用户确定的速度访问某些内容,我通常会使用布尔值isRunning来执行该操作,但这看起来是一种更有效的方法!