2016-12-04 117 views
1

我有一個關於java/android Studio中的類之間進行通信的問題。Android之間的通信

我有一個信息傳遞到海誓山盟這樣四類:

MainActivity{ 

    Intent intent = new Intent (this, Main2Activity.class); 
    intent.putStringArrayListExtra("addressesList", addressList); 
    startActivity(intent); 

} 

Main2Activity{ 

    private ArrayList addressList = new ArrayList(); 
    addressList = getIntent().getStringArrayListExtra("addressesList"); 

    Calculate calulate = new Calculate(this); 
    calulate.getTravelInformation(); 

} 

Calculate{ 

    private ApiCall apiCall = new ApiCall(this); 

    private ArrayList addressesList = new ArrayList();  

    private Main2Activity activity; 

    public Calculate (Main2Activity a){ 
     activity = a; 
     addressesList = activity.addressList; 
    } 

    protected void doSomething(){ 
    } 

} 

ApiCall{ 

    private Calculate calculate; 

    protected ApiCall(Calculate a){ 
     calculate = a; 
    } 

    calculate.doSomething(); 

} 

所以我的問題是,是否有這樣做的更好的方法,是沒有任何理由爲什麼我不應該做這樣的?

非常感謝您的幫助。

回答

2

第一件事,如果你想在活動之間進行溝通,意圖是溝通的選擇。 在Calculate中,如果您確實需要活動引用,則可以使用Activity類來提供可重用性,以防萬一您要在多個位置使用此類時引用main2Activity引用。我不知道你打算在doSomething()中寫什麼,因爲依賴於該方法使類更通用。這同樣適用於ApiCall。因爲你正在創建類之間的循環依賴關係

0

我明白你在經歷同樣的過程。讓我們從一些概念開始吧:

聲明「類之間的通信」背後的概念是,在編程中,類永遠不會相互通信,實際上它們是活動。所以你有兩個活動和兩個輔助類。當您使用Intent時,Yeah Intent是您可以在不同活動之間進行溝通的方式(如共享數據等),並且我們覺得班級之間正在溝通。所以你已經使用Intent Object進行通信,這是非常正確的方式,沒有問題,你正確地使用了,現在,你已經使用了兩個輔助類,並且正在以正確的方式繼續寫下方法。祝你好運。