gpt4 book ai didi

java - 后退按钮在 WebView 中无法正常运行 - Android

转载 作者:行者123 更新时间:2023-11-29 02:40:30 29 4
gpt4 key购买 nike

我有 4 个 fragment ,它们使用查看寻呼机和选项卡在主要 Activity 中显示新闻。但是我的代码仅适用于第一个 fragment ,即选项卡 1

在我的主要 Activity 中

 @Override
public void onBackPressed() {

WebView mWebView = (WebView) findViewById(R.id.webview);
if (mWebView.getVisibility() == View.VISIBLE) {
mWebView.setVisibility(View.GONE);
mWebView.loadUrl("about:blank");
}
else {

super.onBackPressed();
}

return;
}

因此,当按下后退按钮时,它会通过将用户带回主布局来隐藏 Web View 。它适用于选项卡 1

但是在 fragment 2、3、4 中——当我按下后退按钮时,它退出了应用程序。我使用与 fragment 1 中相同的代码

我发现 - mWebView.getVisibility() == View.VISIBLE 未变为真 - 即使网页 View 对于 fragment 2、3、4 可见

fragment 1 代码:

public class WSJFragment extends Fragment implements LoaderManager.LoaderCallbacks<List<News>> {


.........


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


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
rootView = inflater.inflate(R.layout.newsview, container, false);

............

NewsListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
// Find the current earthquake that was clicked on
News currentNews = mAdapter.getItem(position);


String newsUrl = currentNews.getUrl();

progress.setVisibility(View.VISIBLE);

mWebView.setVisibility(View.VISIBLE);

mWebView.loadUrl(newsUrl);

mWebView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(mWebView, url);
progress.setVisibility(View.GONE);

}

});


}


});


return rootView;
}


........

}

https://github.com/mrafz/W3News

最佳答案

我已 checkin 您的代码,进行此更改。

在 MainActivity 中用这个替换

@Override
public void onBackPressed() {

if(mWebView != null){
if (mWebView.getVisibility() == View.VISIBLE) {
mWebView.setVisibility(View.GONE);
mWebView.loadUrl("about:blank");
}else {
finish();
}
}else{ //if webview is null do something... here
}
}

在所有 4 个 fragment 中替换为这个

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
rootView = inflater.inflate(R.layout.newsview, container, false);

MainActivity.mWebView = (WebView) rootView.findViewById(R.id.webview);
MainActivity.mWebView.setVisibility(View.GONE);

//your remaining code here

return rootView;
}

并且在您找到“mWebView” 对象的每个 fragment 中将其替换为MainActivity.mWebView

关于java - 后退按钮在 WebView 中无法正常运行 - Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44512433/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com