2016-11-29 61 views
1

我需要在活動中啓動佈局之前執行方法。如果我調用我需要在onCreate()內執行的方法,它會在佈局設置之前執行嗎?Android:如何在活動中啓動/創建佈局之前執行方法

原因是因爲我需要該方法返回佈局中顯示的一條信息,然後才啓動它。會喜歡這方面的一些反饋。與Android Studio中創建

+0

閱讀活動生命週期。 –

+0

'onCreate()'可能是地方,但它取決於你的具體情況。我認爲你的問題需要更多的信息。 – PPartisan

+1

'它會在佈局設置之前執行嗎?'是的,在調用'setContentView()'之前調用你的方法。 –

回答

4

你可以做任何你以前像這樣的setContentView喜歡檢索:

public class TestActivity extends Activity { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     int i = 0; 
     setContentView(R.layout.main); 
    } 
} 

只要你不與沒有被誇大尚未

意見互動210

例如,這是一個錯誤:

public class TestActivity extends Activity { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     // ERROR, CAN'T TOUCH UI ELEMENTS 
     ImageView img = (ImageView)findViewById(R.id.img); 
     setContentView(R.layout.main); 
    } 
} 
+1

謝謝!這就是我一直在尋找:) – user3519023

+0

不客氣:) –

3

默認活動包含下面的代碼

@Override public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    //Here is code, that executed before layout inflated 
    setContentView(R.layout.example_activity); //This line inflates layout 
} 

順便說一句,你甚至可以刪除setContentView和programmaticaly膨脹佈局。

3

onCreate()之前完成,最好是在致電setContentView()之前完成。但是,如果要接收的數據來自網絡,則將在單獨的Thread(因爲在主Thread上不能進行網絡呼叫)時獲得該數據。在這種情況下,佈局在獲得數據之前幾乎肯定會顯示。

一個解決方案是將獲得的數據塊啓動Activity之前,通過它在Intent作爲額外的,然後在onCreate()使用getIntent().getStringExtra()

3

你可能有setContentView()膨脹的佈局Activity.onCreate(),所以你需要把你的函數調用該方法調用setContentView()之前。

@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 

    yourFunctionCallHere(); 

    setContentView(R.layout.act_main); 
} 
相關問題