A. 怎樣實現android 返回到上一個Activity並重新執行一次onCreate方法
方案1:你可以重寫onresume方法 在onresume方法中調用oncreate 不過會浪費很多資源
方案2:startactivityforresult() 重寫onActivityResult方法 在onActivityResult方法中調用oncreate
方案3:在第一個activity中寫一個callback方法,把第一個activity傳到第二個activity 然後在第二個activity的distory裡面調用callback()方法 callback()方法裡面調用oncreate()
順便打個廣告: Android技術共享群 167 424 520 歡迎新朋友加入
B. 怎樣實現android 返回到上一個Activity並重新執行一次onCreate方法
重寫activty的onkeydown在用戶按下返回鍵的時候調用,所以我們可以通過重寫onkeydown的方法實現,還有可能到了MainActivity前面還有其他acitivty存活這,我們需要在onkeydown的時候把所有的activity都結束掉,為了實現這個我們先定義一個BaseActivity,在Oncreate和ondestroy生命周期里存儲acitivty的引用 用一個List集合存儲存活的acitivity,我們把list作為application成員 寫一個MyApp類,作為程序啟動的application public class MyApp extends Application{ private List<Activity> activities = new ArrayList<Activity>(); public List<Activity> getActivities(){ return activities; } } BaseActivity代碼如下 class BaseActivity extends Activity{ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ((MyApp)getApplication()).getActivities().add(this); } @Override protected void onDestroy() { super.onDestroy(); ((MyApp)getApplication()).getActivities().remove(this); } } 以後工程里的所有Activity都繼承於BaseActivity即可 最後是MainAcitivty的代碼,在onkeydown方法里遍歷list集合,調用每個activity的finish方法即可 public class MyActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_two); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { List<Activity> activities = ((MyApp)getApplication()).getActivities(); for(Activity activity:activities){ activity.finish(); } return super.onKeyDown(keyCode, event); } }
C. Android基礎之Java多態,繼承,重載和重寫的區別
(1)方法重載是讓類以統一的方式處理不同類型數據的一種手段。多個同名函數同時存在,具有不同的參數個數/類型。重載Overloading是一個類中多態性的一種表現。
(2) Java的方法重載,就是在類中可以創建多個方法,它們具有相同的名字,但具
有不同的參數和不同的定義。調用方法時通過傳遞給它們的不同參數個數和參數類型
來決定具體使用哪個方法, 這就是多態性。
(3) 重載的時候,方法名要一樣,但是參數類型和個數不一樣,返回值類型可以相同也可以不相同。無法以返回型別作為重載函數的區分標准。
然後我們再來談談 重寫(Overriding)
(1)父類與子類之間的多態性,對父類的函數進行重新定義。如果在子類中定義某
方法與其父類有相同的名稱和參數,我們說該方法被重寫 (Overriding)。在Java中,子類可繼承父類中的方法,而不需要重新編寫相同的方法。但有時子類並不想原封不動地繼承父類的方法,而是想作一定的修改,這就需要採用方法的重寫。方法重寫又稱方法覆蓋。
(2)若子類中的方法與父類中的某一方法具有相同的方法名、返回類型和參數表,
則新方法將覆蓋原有的方法。如需父類中原有的方法,可使用super關鍵字,該關鍵 字引用了當前類的父類。
(3)子類函數的訪問修飾許可權不能少於父類的;