从同一项目中的其他Java文件调用函数

时间:2014-02-11 23:51:57

标签: java android function

到目前为止,我的应用程序有4项活动。所有这些活动都有来自用户的文本输入(使用编辑文本)。所有这些用户输入部分都需要相同的“错误检查”类型,以确保用户输入正确数据类型的变量(在本例中为数字)。

是否有可能(我假设一切皆有可能)在'SRC'文件夹中创建另一个java文件,我可以编写并存储此函数,然后在我需要它的每个实例中调用它?这个java文件没有与之关联的布局;它只会用于此功能(可能还有其他人,因为我在应用程序上工作)

到目前为止,我还没有找到一个很好的逆向工程示例,而且我不得不写出相同的代码片段4次以上。

我没有发布我的代码示例,因为它似乎毫无意义,因为我认为我只需要如何导入每个活动。

5 个答案:

答案 0 :(得分:1)

你是对的。创建另一个Java文件,例如Utility.java,将所有这些函数都设置为static。然后在其他java文件中将这些函数称为Utility.functionName(String params)。例如:

public class Utility{

    public static boolean functionName(){
        //....
        return true;  
    }
    // and so on...

}

在其他文件中导入类Utility并访问以下函数:

boolean var = Utility.functionName();

答案 1 :(得分:0)

是。您可以创建一个java文件并保留常用功能。我这样做。我通常将文件命名为Utils.java:

public class Utils {

    public static String downloadFileFromInternet(String url)
    {
        if(url == null || url.isEmpty() == true)
            new IllegalArgumentException("url is empty/null");
        StringBuilder sb = new StringBuilder();
        InputStream inStream = null;
        try
        {
            url = urlEncode(url);
            URL link = new URL(url);
            inStream = link.openStream();
            int i;
            int total = 0;
            byte[] buffer = new byte[8 * 1024];
            while((i=inStream.read(buffer)) != -1)
            {
                if(total >= (1024 * 1024))
                {
                    return "";
                }
                total += i;
                sb.append(new String(buffer,0,i));
            }
        }catch(Exception e )
        {
            e.printStackTrace();
            return null;
        }catch(OutOfMemoryError e)
        {
            e.printStackTrace();
            return null;
        }
        return sb.toString();
    }

    public static String urlEncode(String url)
    {
        if(url == null || url.isEmpty() == true)
            return null;
        url = url.replace("[","");
        url = url.replace("]","");
        url = url.replaceAll(" ","%20");
        return url;
    }
}

现在,在任何java文件中,您都可以将它与类名一起使用。

希望这有帮助。

答案 2 :(得分:0)

您可以使用自己的方法定义自己的类,并通过顶部的import语句正常导入。使用静态方法可以正常工作。

您需要指定将类放在使用import语句的包中。

答案 3 :(得分:0)

是的,你可以这样做,只需在你的java文件中创建一个A类,该类包含你想要的方法(foo()),然后,在你的活动中,实例化你的类A,然后调用方法:

public class MyActivity extends Activity {
   @Override
   protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       A a = new A();
       a.foo();
   }
}

class A {
    public void foo() {
        // method implementation
    }
}

答案 4 :(得分:0)

您还可以使用静态方式:

public class MyActivity extends Activity {
   @Override
   protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);

       A.foo();
   }
}

class A {
   public static void foo() {
       // method implementation
   }
}