2014-10-17 90 views
0

我知道如何使用掛起的意圖啓動點擊小部件按鈕的活動,但我想啓動該活動的特定方法。如何通過點擊一個小部件按鈕來調用另一個活動中定義的'方法'?

+1

使其成爲靜態或重新設計您的模型 – biegleux 2014-10-17 12:10:52

+1

將特定方法移到其他類中,而不是調用另一個活動方法。 – 2014-10-17 12:11:44

+0

@biegleux,我沒有時間重新設計,它將在2天內提交。 – ABcDexter 2014-10-17 12:17:38

回答

6

如果您需要在另一個活動中調用某個方法,那麼您正在執行錯誤的設計。你不應該把所有的代碼放在活動中。

爲什麼它是一個不錯的選擇 -
因爲你需要的類的對象調用一個方法就可以了。你將如何獲得這項活動的一個對象?除非你將一個活動的對象存儲到另一個活動中(這是一個相當混亂的事情)。這種方法的另一個問題是你的其他活動可能已經被破壞,所以如果你依賴於其他活動的一些UI元素,那麼你根本得不到任何幫助。讓活動靜態化將爲你打開一大堆蠕蟲。

那麼什麼是可用的選項 -
是有很多可供選擇做活動間的方法調用,但我靠Singletons.They是可以有哪些是靜態只能訪問一個對象類,所以你不必在任何地方存儲類的對象,因爲類本身存儲對象。它可以去像下面 -

public class AppManager{ 
    private static AppManager _instance = null; 
    public static AppManager getInstance(){ 
    if(_instance == null) 
     _instance= new AppManager(); 
    return _instance; 
    } 
    private AppManager(){} //Making the constructor private, so no 2 object can be created 
    public void someMethod(){} 
} 

因此,爲了從任何地方someMethod()在你的項目中你只需要調用

AppManager.getInstance().someMethod(); 

所以做你的計算在裏面。您可以將當前活動的對象存儲在Manager類中,也可以將功能完全從Activity中抽象出來,並且可以更好地控制代碼。當然,你可以有一個以上的單身課程。我通常在我的項目中有幾乎6-7個Singleton管理員來處理不同的任務。

3

您需要在2個不同的活動中使用相同的方法。 所以,最好是使用該方法獲得另一個類,然後在這兩個活動中調用該方法。

public class A extends Activity 
{ 

    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main2); 

    }  

    B.method() 
} 

public class B { 

    public static void method() 
    { 

    } 

} 

public class C extends Activity 
{ 

    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main2); 

     B.method(); 

    } 
} 
+0

好的,我會檢查並通知您。謝謝。 – ABcDexter 2014-10-17 12:33:19

相關問題