1. 程式人生 > >Android如何獲取fragment裡的webview控制元件資源

Android如何獲取fragment裡的webview控制元件資源

先大致講一下專案的框架,模仿京東分類頁面。左側listview,右側一個fragment內嵌webview。當我在MainActivity的onCreate()方法中獲取webview資源,編譯執行APP一直是崩潰。debug找到了原因--空指標異常。仔細分析發現是findviewbyid()方法並沒有獲取到webview這個資源,造成webview是一個null值。由此造成程式的崩潰。

查資料發現是fragment的問題:不能在onCreate函式中獲取控制元件,以為fragment還沒有start,你可以在onStart函式中獲取

@Override
protected void onStart
() { super.onStart(); Bundle b=this.getIntent().getExtras(); String[] array=b.getStringArray("data");webView = (WebView)findViewById(R.id.webView); if (array[0].equals("@1005")){ mPosition = 2; listView.setSelection(mPosition); webView.loadUrl("http://baidu.html");}}
這樣就可以在MainActivity中順利獲取fragment中的webview資源,並在程式碼中動態更改webview的url。

順便解釋一下這行程式碼的作用:

mPosition = 2;
listView.setSelection(mPosition);
mPosition是一個全域性變數,第二行程式碼可以使listview滑動到指定的item位置。