2017-11-16 3 views
1

Ich versuche, ein WebView in einem Fragment zu erstellen, das geladen werden soll. Ich habe es bereits zu meiner XML-Datei hinzugefügt. Die findViewById-Methode funktioniert jedoch nur, wenn ich eine Aktivitätsklasse erweitere. Gibt es das überhaupt, von dem ich es in Fragment auch benutzen kann?Wie lädt WebView in Fragment-Klasse?

Ich habe bereits die Lösung aus einer anderen Frage getestet, aber es funktioniert nicht.

public class OneFragment extends Fragment{ 

public WebView PlanWebView; 

public OneFragment() { 
    // Required empty public constructor 
} 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
} 

@Override 
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { 
    PlanWebView WebView = (PlanWebView) getView().findViewById(R.id.PlanWebView); 
    // Unknown class: "PlanWebView"; 
} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    // Inflate the layout for this fragment 
    return inflater.inflate(R.layout.fragment_one, container, false); 
} 

} 

Antwort

1

Versuchen Sie dies bitte, das die Klasse OneFragment ist, braucht Webview eine Ansicht, die unter Verwendung von XML

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 

    View view=inflater.inflate(R.layout. fragment_one, container, false); 
    mWebView = (WebView) view.findViewById(R.id.webview); 
    mWebView.loadUrl("https://google.com"); 

    // Enable Javascript 
    WebSettings webSettings = mWebView.getSettings(); 
    webSettings.setJavaScriptEnabled(true); 

    // Force links and redirects to open in the WebView instead of in a browser 
    mWebView.setWebViewClient(new WebViewClient()); 

    return view; 
} 

und xml für fragment_one

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    > 

    <WebView 
     android:id="@+id/webview" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 
</RelativeLayout> 
+0

Dank für die Beantwortung! Ich habe ein anderes Problem ... Wie kann ich dieses WebView in einem Fragment neu laden? Ohne Fragmente und in einer einzigen MainActivity ist es sehr einfach ... Ich habe ein Menü in der MainActivity hinzugefügt, aber wo muss ich den öffentlichen boolean für das Menü hinzufügen? Wenn ich das in der One_Fragment.class hinzufüge, bekomme ich einen Absturz nach dem Drücken der Update-Taste im Menü. – Perflyst

+0

'@Override public boolean onOptionsAtemSelected (MenuItem menuitem) { int id = menuitem.getItemId(); if (id == R.id.update) { OneFragment.this.PlanWebView.loadUrl ("http://google.de"); } Rückgabe false; } ' – Perflyst

+0

Hallo Lieber, können Sie bitte erklären Sie Ihre neue Frage, ich bin nicht in der Lage, es zu bekommen? Willst du Webview von der Hauptaktivität neu laden? –

0

werden muss aufgeblasen In Fragment können Sie Ihre Variablen in der onCreateView-Methode deklarieren.

public class OneFragment extends Fragment{ 

public WebView PlanWebView; 

public OneFragment() { 
// Required empty public constructor 
} 

@Override 
public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
    } 

@Override 
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { 


} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
        Bundle savedInstanceState) { 
View view=inflater.inflate(R.layout.fragment_one, container, false); 
PlanWebView = (WebView)view.findViewById(R.id.PlanWebView); 
return view; 
    } 

} 
0

sollten Sie folgenden Code in onCreateView Methode verwenden:

View view = inflater.inflate(layout,container,false); 

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

return view; 
Verwandte Themen