2012-12-30 122 views
0

如果全局數據結構不存在(它是靜態的,在public class Globals extends Application中),我想在我的一個活動中隱藏一個按鈕。因爲我想,只要我恢復活動,但寧可不重繪視圖的其餘部分重繪按鈕,我把鑑於onCreate()初始化和按鈕隱藏代碼onResume()活動生命週期問題

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.myActivity); 
} 

@Override 
protected void onResume() { 
    super.onResume(); 

    if (Globals.datastructure == null) { 
     ((Button) findViewById(R.id.myButton)).setVisibility(View.GONE); 
    } 
} 

當我分配數據結構,然後返回到不同活動的活動,onResume正確執行,但該按鈕不會再出現。

回答

3

包含該按鈕的活動可能不會被重新創建,這意味着當您從其他活動返回到該活動時,該按鈕從不會被設置爲可見(後退)。你或許應該改變onResume()喜歡的東西:

@Override 
protected void onResume() { 
    super.onResume(); 

    findViewById(R.id.myButton).setVisibility(Globals.datastructure == null ? View.GONE : View.VISIBLE); 
} 

所以基本上你只需要確保每當Globals.datastructure != null,也相應地更改知名度。換句話說:if需要else

+0

這非常合理,謝謝!如果我在'onResume()'中重寫了視圖,我只需要擔心刪除按鈕,但由於我只在創建活動時繪製視圖,所以我也不得不擔心重新添加它。 –