2014-02-11 45 views
0

我有一個應用程序,目前有4個活動。所有這些活動都有來自用戶的文本輸入(使用編輯文本)。所有這些用戶輸入部分將需要相同的「錯誤檢查」類型,以確保用戶輸入正確數據類型的變量(在本例中爲數字)。在同一個項目中調用其他Java文件的函數

是否有可能(我假設任何事情都是可能的),以使其他Java文件中,我也會寫,也會存儲這些功能,然後在每一個實例調用,我需要它的「SRC」文件夾?這個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(); 
+0

我認爲這正是我正在尋找的。還有一個問題:進口聲明會是什麼樣子? –

+1

在活動中使用'Ctrl' +'Shift' +'O'自動導入正確的導入語句。請注意,它的'O'不是零! –

+0

你可以確保它在UI線程中調用,而不是後臺線程。您還需要通過上下文或「活動」 –

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文件,你可以用類名稱中使用它。

希望這會有所幫助。

0

您可以定義自己的類,用自己的方法,通常將其導入,通過頂部的import語句。使用靜態方法將工作得很好。

你需要指定你已經把你的類使用import語句的包。

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 
    } 
} 
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 
    } 
} 
相關問題