веб-просмотр всегда нулевой - PullRequest
0 голосов
/ 20 января 2012

У меня есть WebViewFragment, и когда я пытаюсь использовать веб-представление, оно дает мне нулевой указатель

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

Почему оно пустое?

Ответы [ 2 ]

2 голосов
/ 20 января 2012

Jivings - это правильно, но, чтобы прояснить большую часть времени, вы захотите получить и прикрепить ваши представления в методе onCreateView, где происходит инфляция иерархии родительских представлений. Реализация по умолчанию onCreateView в WebViewFragment присоединяет WebView к родительскому представлению для вас, поэтому вам не нужно беспокоиться об этом в этом случае (то же самое относится и к аналогичным классам, таким как ListFragment) , Я думал, что это стоит упомянуть. Если вы просто хотите получить свой вид из макета вида Activity, вы должны сделать это в onActivityCreated, поскольку он вызывается только после создания макета Activity. В приведенном выше коде вы извлекаете представление до того, как оно было прикреплено, и getWebView правильно возвращает ноль.

Убедитесь, что вы понимаете жизненный цикл Fragment, это действительно важно!

0 голосов
/ 20 января 2012

Вместо этого вы должны поместить код в функцию onActivityCreated(). Это вызывается после создания экземпляра WebView.

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

onCreate вызывается при создании действия до того, как WebView было.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...