在我的主要活動中,我想覆蓋onResume方法,因此它的行爲有所不同,具體取決於之前打開的活動。 例如:如果用戶爲listView(在addNewItem活動中)創建一個新項目,我需要重新加載數據庫以顯示newItem。 但是,如果他只切換到一個活動,它不會改變主活動中顯示的對象的任何內容,則不應該重新加載數據庫,並且不應該再次構建GUI。爲此,我需要知道哪些活動是「打開」過的。如何確定哪些活動在onResume中被打開
我希望你能理解我的問題。
在我的主要活動中,我想覆蓋onResume方法,因此它的行爲有所不同,具體取決於之前打開的活動。 例如:如果用戶爲listView(在addNewItem活動中)創建一個新項目,我需要重新加載數據庫以顯示newItem。 但是,如果他只切換到一個活動,它不會改變主活動中顯示的對象的任何內容,則不應該重新加載數據庫,並且不應該再次構建GUI。爲此,我需要知道哪些活動是「打開」過的。如何確定哪些活動在onResume中被打開
我希望你能理解我的問題。
當您致電活動時,您可以通過您的意圖發送一些東西。
Intent myIntent = new Intent(Activity1.this,Activity2.class);
Bundle myData = new Bundle();
myData.putString("previousActivity", "Activity1");
myIntent.putExtras(myData);
startActivity(myIntent);
然後在新的活動,您訪問本和比較的結果:
Intent myLocalIntent = getIntent();
Bundle myBundle = myLocalIntent.getExtras();
String str1 = myBundle.getString("previousActivity");
if string.equals("Activity1"){
// do code changes for activity 1 here
}
有這樣做(即通過一個int變量,它對應於特定活動的略微更加細化的方式)但這是最基本的方式。
正確的做法是,開始每個活動與startActivityForResult(intent, resultCode)
。
當活動退出時,它可以調用setResult(int)將數據返回給其父級。
你的設計是錯誤的。您絕不應僅僅依靠導航來重新加載消費者中的數據。更改數據的類應通知消費者,而不必關心它的重新加載。你會在這裏寫一個「kludge」。請參閱notifyDataSetChanged。 http://adblogcat.com/sqlite-database/。在一個好的設計中,無論用戶打開哪個Activity然後關閉,您的主要活動都會正確運行。不需要糟糕的代碼。 – Simon