我有一種方法,出於某種原因,只有在從主要活動調用它時纔有效。問題是我正試圖從另一個班級調用它。 有沒有辦法調用一個方法作爲主要活動?調用方法作爲主要活動
回答
您可以隨時通過主尺蠖創建處理程序運行在主線程代碼:
Handler handler= new Handler(Looper.getMainLooper());
然後,只需調用
handler.post(new Runnable(
@Override
public void run() {
// code that should be running from UI Thread
}
));
這正是我想要的。 – Sochimickox
當然,我可以讀你的思想=)。 「主要活動」和主線程(UI線程) - 它是完全不同的東西 – birdy
那麼,我在談論的主要活動在android – Sochimickox
如果是靜態方法,請將其稱爲:MyActivityClass.myMethod(myArg1,myArg2)。
確保您的方法是靜態的,也是公開的而不是私有的。另外,不要忘記也包括課程。之後,您應該可以使用該類的任何對象的方法。
當您從不同的類中使用的方法,你需要創建方法定義的類的實例。考慮以下兩類:
public class Test{
public void showMesage(){
System.out.println("I am method showMessage from class Test!");
}
}
public class TestCall{
public void run(){
Test.showMesage();
}
}
Class Test has a method named "showMessage". The method "run" in TestCall class is trying to use the showMessage method. This will generate similar error that you are having. To resolve that, you need to make an instance of the class Test inside the run method like this:
public void run(){
Test t = new Test(); // create an instance
t.showMesage(); // use t to refer any method of class Test
}
Or, you can make the method showMessage static like this:
public static void showMesage(){
System.out.println("I am method showMessage from class Test!");
}
Now, you don't need to change the run method anymore. If you have any questions, post 'em.
Additional Suggestion:
You can always write a method which will extract the array list for you like this:
import java.util.ArrayList;
public class Test{
ArrayList al = null;
public void populateList(){
al = new ArrayList();
al.add("Apple");
al.add("Mango");
}
public ArrayList getList(){
return this.al;
}
}
import java.util.ArrayList;
public class TestCall{
public void run(){
Test t = new Test();
t.populateList();
ArrayList aList = t.getList();
System.out.println(aList.get(0));
System.out.println(aList.get(1));
}
public static void main(String[] strARgs){
new TestCall().run();
}
}
Further response:
In that case, you can declare the ArrayList as static so that you can access that arraylist from other class directly. For example, class Mango as a arraylist named aList like:
class Mango {
public static ArrayList aList = null; //this is a global variable
//some methods and stuff
.......
.....
}
This aList now can be accessed easily from other classes like:
import Mango;
class Apple {
ArrayList aList = Mango.AList; // direct call
...
....
}
Another thing, before you access the arraylist, you need to make sure that the event that populates the arraylist(dynamically) has been called already from the same class where you are trying to access the arraylist.
請格式化代碼和答案時提供一個。 – Melquiades
- 1. PreferenceActivity調用主要活動的方法
- 2. Android:從Async onPostExecute方法調用主要活動方法
- 3. 調用炭方法爲主要方法
- 4. 我無法從類中調用主要活動的方法
- 5. 從另一個類調用主要活動方法
- 6. 如何從主要活動調用片段方法
- 7. 調用BroadcastReceiver中的主要活動方法
- 8. 在主要活動上調用公共方法
- 9. 主要活動不關閉完成方法調用
- 10. 如何從其他活動調用主要活動中的方法?
- 11. 第二次活動的方法改變textview沒有從主要活動調用
- 12. hibernate主要方法調用
- 13. GridView,只作爲主要活動打開,
- 14. 主要方法中的調用方法
- 15. 如何使另一個活動作爲主要活動(啓動)
- 16. 從BroadcastReceiver調用主要活動
- 17. 調用方法到活動
- 18. android活動方法調用
- 19. 方法調用活動
- 20. 從活動調用方法
- 21. 作爲主要活動在圖書館中開放活動
- 22. 主要活動
- 23. 調用主要活動顯示活動未找到異常
- 24. 有一個主要活動,調用另一個活動
- 25. 如何在其他claas的主要活動中調用活動?
- 26. Android應用的ClassNotFoundException爲主要活動
- 27. 如何從主要活動調用偏好操作?
- 28. Java Android:子類,從主要活動類引發的調用方法NullPointerException
- 29. 可以從一個主要活動調用自己從AsyncTask的postExecute方法
- 30. 如何調用一個方法存在於主要活動的ActionBar Tab片段
它肯定會有助於查看您的代碼。 – EJK
發佈你的logcat輸出也會有幫助。你需要更具體地瞭解什麼是不工作。 – EJK