0
マイタブレイアウトには、webviewとプログレスバーを含む1つのフラグメントを持つ3つのタブがあります。私は2つのためにさらに2つのJavaファイルを作成したいWebviewのパブリックメソッドを作成する
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ProgressBar
android:id="@+id/progressBar1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:indeterminate="false"/>
<android.support.v4.widget.SwipeRefreshLayout
android:id="@+id/swipe1"
android:layout_width="match_parent"
android:layout_height="match_parent">
<WebView
android:id="@+id/website_detail_1"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
</WebView>
</android.support.v4.widget.SwipeRefreshLayout>
</RelativeLayout>
:私はこれは私が使用してフラグメントクラスです。この
public class Yahoo extends Fragment {
private WebView webView;
private ProgressBar progressBar1;
private SwipeRefreshLayout mSwipeRefreshLayout1;
public Yahoo() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_tab1, container, false);
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
progressBar1 = (ProgressBar) view.findViewById(R.id.progressBar1);
// String url = "http://www.carsaleindiaofficial.com/?m=1";
webView = (WebView) view.findViewById(R.id.website_detail_1);
webView.setWebViewClient(new MyAppWebViewClient());
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setDomStorageEnabled(true);
webView.loadUrl("http://www.yahoo.com//");
webView1.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);
view.loadUrl("file:///android_asset/web.html");
myWebView.getSettings().setDefaultZoom(ZoomDensity.FAR);
WebSettings webSettings = webView.getSettings();
webView.getSettings().setRenderPriority(WebSettings.RenderPriority.HIGH);
webView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
webView.getSettings().setAppCacheEnabled(true);
webSettings.setDomStorageEnabled(true);
webView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
webSettings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN);
webSettings.setUseWideViewPort(true);
webSettings.setSavePassword(true);
webSettings.setSaveFormData(true);
webSettings.setEnableSmoothTransition(true);
webSettings.setDefaultZoom(WebSettings.ZoomDensity.FAR);
mSwipeRefreshLayout1 = (SwipeRefreshLayout) view.findViewById(R.id.swipe1);
mSwipeRefreshLayout1.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
webView.loadUrl("http://www.yahoo.com/");
}
});
if (mSwipeRefreshLayout1.isRefreshing()) {
mSwipeRefreshLayout1.setRefreshing(false);
}
webView.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack()) {
webView.goBack();
return true;
}
return false;
}
});
}
public class MyAppWebViewClient extends WebViewClient {
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
//view.findViewById(R.id.progressBar1).setVisibility(View.GONE);
Log.i("pageFinished", "yesss");
//progressBar.setVisibility(View.INVISIBLE);
progressBar1.setVisibility(View.GONE);
if (mSwipeRefreshLayout1.isRefreshing()) {
mSwipeRefreshLayout1.setRefreshing(false);
}
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
}
}
ようになり、ウェブサイトのための3種類のjavaファイルと1つのJavaファイルを作成しました別のウェブサイトと私はちょうど最初のJavaファイルからコードのすべての行をコピーし、残りの2つのウェブサイトのアドレスを変更して貼り付けます。私は何かを変更するたびに3つのファイルすべてを変更する必要があるため、一般的なパブリックメソッドを呼び出すことでこれを単純化する方法を知りたいと思います。
また、私のアプリケーションは、リソースを使用して、フレームをスキップしてlogcatを表示する理由を最小限に抑えます。
フラグメントであるので、setArgumentのコードを助けてくれますか? – choman