2012-01-19 40 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