到目前为止,我的应用程序有4项活动。所有这些活动都有来自用户的文本输入(使用编辑文本)。所有这些用户输入部分都需要相同的“错误检查”类型,以确保用户输入正确数据类型的变量(在本例中为数字)。
是否有可能(我假设一切皆有可能)在'SRC'文件夹中创建另一个java文件,我可以编写并存储此函数,然后在我需要它的每个实例中调用它?这个java文件没有与之关联的布局;它只会用于此功能(可能还有其他人,因为我在应用程序上工作)
到目前为止,我还没有找到一个很好的逆向工程示例,而且我不得不写出相同的代码片段4次以上。
我没有发布我的代码示例,因为它似乎毫无意义,因为我认为我只需要如何导入每个活动。
答案 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
}
}