2012-01-19 38 views
0

我有一個WebViewFragment,並試圖讓web視圖使用時,它給了我一個空指針的WebView總是空

public class BallInfoFragment extends WebViewFragment { 
long id; 

public BallInfoFragment(long id){ 
    this.id = id; 
} 

@Override 
public void onCreate(Bundle state){ 
    super.onCreate(state); 
    String ball = new String(); 
    Cursor c = getActivity().getContentResolver().query(Balls.CONTENT_URI,new String[] {Balls.ID,Balls.BALL},Balls.ID+"="+id,null,null); 
    c.moveToFirst(); 
    ball = c.getString(1); 
    WebView wv = getWebView(); //getWebView always gives me null 

爲什麼是空?

回答

0

您必須將代碼放入onActivityCreated()函數中。這在WebView已被實例化後調用。

@Override 
public void onActivityCreated(Bundle savedInstanceState) { 
    // your code here. 
    WebView wv = getWebView(); 
} 

onCreateWebView以前一直在創建活動時被調用。

+0

這樣做,但它現在不會顯示任何東西。它告訴我,它無法找到我的資產文件夾中的HTML文件,我聲明像這樣'wv.loadUrl(「file /// android_asset/train.html」);'文件名是正確的 – tyczj

2

Jivings是正確的,但要澄清大多數情況下,您需要在onCreateView方法中檢索並附加您的視圖,這是父視圖層次結構發生膨脹的原因。 WebViewFragment中的的默認實現將WebView附加到您的父視圖,因此在這種情況下您不必擔心它(類似的類(如ListFragment)也是如此)。我認爲這值得一提。如果您只是想從Activity的視圖佈局中檢索您的視圖,則應該在onActivityCreated中執行此操作,因爲只有在創建了Activity的佈局後纔會調用此視圖。在上面的代碼中,您正在檢索視圖,然後getWebView正確返回null。

確保您瞭解Fragment生命週期,這非常重要!

+0

好吧,所以也許你可以回答這個問題,爲什麼不會在我的資產文件夾中顯示我的html文件?我在''onActivityCreated'' wv.loadUrl(「file /// android_asset/train.html」)中聲明像這樣;文件名是正確的 – tyczj

+0

你的意思是'wv.loadUrl(「file:/// android_asset/train.html「);'?在反斜線之前用冒號結尾? –

+0

哈哈是的忘記了 – tyczj