2017-01-15 1 views
1

Я получаю сообщение об ошибке не может решительность метод «findViewById (интермедиат)» когда Вызовите WebView, как решить эту проблему? enter image description here на самом деле это WebView для моего домашнего фрагмента (первый фрагмент программы)не может решить метод «findViewById (INT)» для моей WebView

package com.fb.jaisonjoseph.facebookbasic; 

import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.webkit.WebView; 



/** 
    * A simple {@link Fragment} subclass. 
*/ 
public class Home_Fragment extends Fragment { 

public WebView mwebView; 
public Home_Fragment() { 

    // Required empty public constructor 
} 



@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    // Inflate the layout for this fragment 



    WebView view=(WebView) findViewById(R.id.webView); 
    view.loadUrl("http://google.com"); 
    view.getSettings().setJavaScriptEnabled(true); 
    view.setWebViewClient(new MyWebViewClient()); 




    return inflater.inflate(R.layout.fragment_home_, container, false); 
} 

} 
+0

вы должны раздуть макет в поле зрения и использовать view.findViewById –

ответ

1

Используйте этот путь.

@Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     // Inflate the layout for this fragment 
     View rootView = inflater.inflate(R.layout.fragment_home_, null); 
     WebView view=(WebView) rootView.findViewById(R.id.webView); 
     view.loadUrl("http://google.com"); 
     view.getSettings().setJavaScriptEnabled(true); 
     view.setWebViewClient(new MyWebViewClient()); 
     return rootView; 
    } 
+0

Пожалуйста, отметьте ответ как «Правильно». – Shekhar

0

Вы должны использовать эту строку кода:

WebView view=(WebView) getActivity().findViewById(R.id.webView); 

вместо

WebView view=(WebView) findViewById(R.id.webView); 

Этот is becau findViewById() не может быть вызван непосредственно на Fragment. Вы должны либо refere к Acticity или вызвать его на View -объект

+0

findViewById() может быть вызван на фрагменте непосредственно. – slanecek

+0

Я уверен, что он не может, но вы можете мне доказать иначе :) – Force0234

+0

Да, он должен быть вызван в представлении. – slanecek

3

Вопросы

1.) Вы возвращаете новый вид каждый раз

return inflater.inflate(R.layout.fragment_home_, container, false); 

2.) Используйте надутый вид найти Ваше отношение

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    View view =inflater.inflate(R.layout.fragment_home_, container, false); 
    // ^^^ will have all view of fragment_home_ layout 

    WebView webView = (WebView) view.findViewById(R.id.webView); 
    //       ^^^^ use view to find your webview 

    webView.loadUrl("http://google.com"); 
    webView.getSettings().setJavaScriptEnabled(true); 
    webView.setWebViewClient(new MyWebViewClient()); 
    return view; 
} 

Примечание: вы можете удалить вас mwebView из Home_fragmnet класс, но если вы хотите использовать WebView в других методах затем использовать mwebView вместо локального WebView view переменной

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    View view =inflater.inflate(R.layout.fragment_home_, container, false); 
    // ^^^ will have all view of fragment_home_ layout 

    mwebView = (WebView) view.findViewById(R.id.webView); 
    //^^^ use global variable instead of creating a local one 

    mwebView.loadUrl("http://google.com"); 
    mwebView.getSettings().setJavaScriptEnabled(true); 
    mwebView.setWebViewClient(new MyWebViewClient()); 
    return view; 
} 
+0

Как вы решаете первую проблему, о которой вы указали? Я всегда возвращаю завышенный взгляд. – rupinderjeet

+1

@rupinderjeet by new View, я имею в виду, что внутри этого представления ничего не инициализируется, OP должен инициализировать представление внутри представления, возвращаемого надувным устройством, иначе ничего не будет работать, если кто-то хочет сохранить фрагмент, а затем использовать [fragmentManager] (https: //developer.android.com/guide/components/fragments.html) –

Смежные вопросы