2017-11-16 21 views
1

ロードする必要があるフラグメントにWebViewを作成しようとしています。私は既にxmlファイルに追加しました。しかし、findViewByIdメソッドは、Activityクラスを拡張する場合にのみ機能します。とにかく私はそれを断片でも使うことができますか?FragmentクラスでWebViewをロードするには?

私は既に別の質問から解決策をテストしましたが、うまくいきません。

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); 
} 

} 

答えて

1

、これはOneFragmentクラスでください、これを試してみてください、WebViewが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

ありがとう! 私は別の問題があります... フラグメント内でこのWebViewを再ロードする方法はありますか? フラグメントがなく、単一のMainActivityで非常に簡単です... MainActivityにメニューを追加しましたが、どこにメニューの公開ブール値を追加する必要がありますか? One_Fragment.classでこれを追加すると、メニューの更新ボタンを押した後にクラッシュします。 – Perflyst

+0

'@Override パブリックブール値onOptionsItemSelected(MenuItem menuitem){ int id = menuitem.getItemId(); if(id == R.id.update){ OneFragment.this.PlanWebView.loadUrl( "http://google.de"); } falseを返します。 } ' – Perflyst

+0

こんにちは親愛なる、私はそれを得ることができないあなたの新しい問題について説明することができますか?主なアクティビティからwebviewをリロードしたいのですか? –

0

ための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; 
} 

XMLを使用して膨張する必要があるビューを必要としますフラグメントでは、onCreateViewメソッドで変数を宣言できます。

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

あなたはonCreateView方法に以下のコードを使用する必要があります答えるため

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

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

return view; 
関連する問題