2014-09-23 40 views
0

正如標題所暗示的,我的目標是在另一個ActivityAddActivity」被反向按下時更新一個ActivityMainActivity」上的一些變量。目前,我可以在MainActivity上更新變量的唯一方法是創建一個新的實例,我不想這樣做。我希望變量的更新發生在已經實例化的MainActivity上。一些代碼片段都低於:Android更新在另一個活動上調用onBackPressed時的活動

public class AddActivity extends MainActivity { 
    .... 
    @Override 
    public void onBackPressed() { 
     super.onBackPressed(); 
     updateMain(); 
    } 
} 

public class MainActivity extends Activity { 
    ....  
    // This gets executed when the Activity gets created 
    @Override 
    protected void onStart() { 
     super.onStart(); 
     Log.d("tag", "main onstart"); 
     updateMain(); 
    } 

    protected void updateMain() {  
     DBAdapter dba = new DBAdapter(this); 
     dba.open(); 
     .... 
     double cost = dba.getCost(); 
     String costString = String.valueOf(cost); 
     textView.setText(costString); 
     dba.close(); 
    } 
} 
+0

是否有任何錯誤在你logcat或什麼問題 – 2014-09-23 02:52:01

+0

我會再次模擬它並觀察LogCat。 – Hayden 2014-09-23 02:53:20

+0

LogCat沒有顯示任何異常情況。 – Hayden 2014-09-23 03:06:28

回答

1

的AddActivity延伸MainActivity,所以當你在AddActivity調用updateMain(),它會調用AddActivity的updateMain但不MainActivity的,所以它不會生效。

public class AddActivity extends MainActivity { 
    .... 
    @Override 
    public void onBackPressed() { 
     super.onBackPressed(); 
     updateMain();// it is this.updateMain, while 'this' here means a AddActivity instance. 
    } 
} 

我認爲AddActivity擴展MainActivity不是必須的(也許...)。您可以將數據寫入SharePreference,然後從您的MainActivty中讀取它。

+0

好的,我會測試MainActivity是否有必要(團隊成員的設計決定)。將盡快報告。 – Hayden 2014-09-23 03:06:13

+0

http://developer.android.com/guide/faq/framework.html#3這可能會幫助你。 – EricHua23 2014-09-23 03:19:51

0

隨着有點頓悟感謝改爲@ EricHua23,我並不需要延長MainActivityupdateMain()在呼喚AddActivityupdateMain()。所以我做了一個自定義的ActivityRootActivity類,它通過覆蓋onCreate()MainActivity實例存儲到一個變量中,我簡單地將所有類擴展爲RootActivity。這樣,我可以通過這個變量訪問MainActivity

0

您可以通過使用處理器中AddActivity和主要活動更新來自附加活動主要活動onBackpressed利用處理器和AddActivity處理程序更新變量內您要發送空消息, 在應用類中定義的處理程序,並制定者和getter方法並在mainActivity和AddActivity中使用它。

相關問題