2011-10-04 26 views
0

是否可以在不同的活動中重用方法?舉例來說,我有retrieveAllStudents()StudentActivity。我可以讓它變成靜態的或者可以調用ClassActivity中的方法嗎?或者我需要在兩個活動中複製該方法嗎?在Android中的不同活動中重用方法

哪一個是正確的?

實施例1:

StudentActivity

public static ArrayList<Student> retrieveAllStudents(){ 
    ... 
    return studentList; 
} 

ClassActivity

import StudentActivity 

ArrayList<Student> studentList= StudentActivity.retrieveAllStudents(); 

實施例2:

StudentActivity

public static ArrayList<Student> retrieveAllStudents(){ 
    ... 
    return studentList; 
} 

ClassActivity

public static ArrayList<Student> retrieveAllStudents(){ 
    ... 
    return studentList; 
} 

ArrayList<Student> studentList= retrieveAllStudents(); 

回答

1

如果是public static它是從其他活動(以及應用中的任何其他類)絕對入店。但是,當活動彼此調用函數時,可能導致代碼過於複雜。考慮將getStudent()函數和其他共享功能移至單獨的Student類。

編輯是的,可以重用其他類中的方法。這是非常普遍的,並被認爲是最佳做法。給出你的兩個例子,第一個更正確。

+0

如果以前會被殺死,會不會有任何訪問它的功能問題? –

+0

@AndroidPower No.在一個類上調用一個靜態方法並不要求該類被實例化。如果它是一個實例方法,那麼該類確實需要實例化,但實例化的類與Activity lifecyle非常不同。 – spatulamania

+0

好的。如果我理解正確,如果該方法在'class'中,則沒有問題。但是,如果靜態方法在「Activity」中呢? – newbie

0

如果它是一個通用的方法,然後把它放在應用程序類,使應用程序類

public static Context getAppContext() { return context; };

0

的靜態語境通過我認爲更好的方法是使類(剛下課,但不活動)使用必要的方法,然後在Activity中創建該公共方法類的實例,並在需要時使用方法。 (example

其他解決方案是從ClassActivity擴展StudentActivity,如果它們都需要是這裏沒有的活動。

無論如何,也許你應該再次考慮什麼類應該是你的應用程序中的活動。 閱讀關於activities的一些信息可能會有幫助。 然後我建議根據您的需要使用上述兩種方法之一。這將防止由Android系統從堆棧中移除您的活動而導致的問題(您也可以閱讀活動lifecycle)。

乾杯

相關問題