2012-01-19 8 views
0

私がWebViewFragmentを持っているとのWebViewを使用して取得しようとすると、それは私にNULLポインタ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 

なぜそれがnullを与える常にnullですか?

答えて

0

代わりにonActivityCreated()関数内にコードを挿入する必要があります。これは、WebViewがインスタンス化された後に呼び出されます。

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

onCreate活動が作成されたときにWebViewがされている前に、と呼ばれています。

+0

それをしましたが、今は何も表示されません。私の資産フォルダにあるhtmlファイルを見つけることができず、この 'wv.loadUrl(" file /// android_asset/train.html ");のように宣言します。ファイル名は正しい – tyczj

2

Jivingsは正しいですが、ほとんどの場合、親ビュー階層の膨張が発生するonCreateViewメソッドでビューを取得して添付することをお勧めします。 onCreateViewの既定の実装では、WebViewが親ビューに関連付けられているため、この場合は心配する必要はありません(同様のクラス(ListFragmentなど)でも同じです)。私はそれが言及する価値があると思った。 Activityのビューレイアウトから単にビューを取得する場合は、Activityのレイアウトが作成された後にのみ呼び出されるため、onActivityCreatedでこれを行う必要があります。上のコードでは、ビューがアタッチされる前に取得していますが、getWebViewは正しくnullを返しています。

Fragmentのライフサイクルを理解していることを確認してください。本当に重要です!

+0

ですこれに答えると、私の資産フォルダに自分のhtmlファイルが表示されないのはなぜですか?私は 'onActivityCreated'' wv.loadUrl(" file /// android_asset/train.html ");でファイルの名前が正しいことを宣言します。 – tyczj

+0

' wv.loadUrl( "file:/// android_asset/train.html ");'?バックスラッシュの前にコロンが付いていますか? –

+0

haha​​はい忘れてしまった – tyczj