У меня есть комментарий от Facebook в моем приложении. Но в веб-обзоре Facebook есть кнопка sh, которая нажимает на каждую кнопку фильтра. это выглядит так:
На что консоль ответила:
01-23 11: 40: 51.733 32441-32441 / mobile. android .tribun E / AndroidRuntime: FATAL EXCEPTION: main Процесс: mobile. android .tribun, PID: 32441 android .content.res.Resources $ NotFoundException: идентификатор ресурса # 0x0 при android .content .res.Resources.getValue (Resources. java: 1351) в android .content.res.Resources.loadXmlResourceParser (Resources. java: 2774) в android .content.res.Resources.getLayout (Resources . java: 1165) в android .view.LayoutInflater.inflate (LayoutInflater. java: 421) в android .widget.ArrayAdapter.createViewFromResource (ArrayAdapter. java: 378) в android. widget.ArrayAdapter.getView (ArrayAdapter. java: 369) в org.chromium.content.browser.input.SelectPopupAdapter.getView (SelectPopupAdapter. java: 56) в android .widget.AbsListView.obtainView (AbsListView. java: 2346) в android .widget.ListView.measureHeightOfChildren (ListView. java: 1280) в android .widget.ListView.onMeasure (ListView. java: 11 88) в android .view.View.measure (просмотр. java: 18788) в android .view.ViewGroup.measureChildWithMargins (ViewGroup. java: 5951) в android .widget.FrameLayout.onMeasure (FrameLayout. java: 194) в android .view.View.measure (просмотр. java: 18788) в android .view.ViewGroup.measureChildWithMargins (ViewGroup. java: 5951) в android .widget.FrameLayout.onMeasure (FrameLayout. java: 194)
Я создал этот комментарий FB с этим фрагментом кода:
private void loadComments() {
try {
mWebViewComments.setWebViewClient(new UriWebViewClient());
mWebViewComments.setWebChromeClient(new UriChromeClient());
mWebViewComments.getSettings().setJavaScriptEnabled(true);
mWebViewComments.getSettings().setAppCacheEnabled(true);
mWebViewComments.getSettings().setDomStorageEnabled(true);
mWebViewComments.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
mWebViewComments.getSettings().setSupportMultipleWindows(true);
mWebViewComments.getSettings().setSupportZoom(false);
mWebViewComments.getSettings().setBuiltInZoomControls(false);
CookieManager.getInstance().setAcceptCookie(true);
if (Build.VERSION.SDK_INT >= 21) {
mWebViewComments.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
CookieManager.getInstance().setAcceptThirdPartyCookies(mWebViewComments, true);
}
// facebook comment widget including the article url
String html = "<!doctype html> <html lang=\"en\"> <head></head> <body> " +
"<div id=\"fb-root\"></div> " +
"<script async defer crossorigin=\"anonymous\" src=\"https://connect.facebook.net/id_ID/sdk.js#xfbml=1&version=v5.0&appId=" + getString(R.string.facebook_app_id) + "&autoLogAppEvents=1\"></script>"+
"<div class=\"fb-comments\" data-href=\"" + urlArticle + "\" " +
"data-numposts=\"" + NUMBER_OF_COMMENTS + "\" data-order-by=\"reverse_time\">" +
"</div> </body> </html>";
mWebViewComments.loadDataWithBaseURL("https://m.facebook.com", html, "text/html", "UTF-8", null);
mWebViewComments.setMinimumHeight(200);
} catch (Exception e) {
Toast.makeText(this, "Out of memory, please try later", Toast.LENGTH_SHORT).show();
e.printStackTrace();
}
}
private class UriWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
String host = Uri.parse(url).getHost();
return !host.equals("m.facebook.com");
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
String host = Uri.parse(url).getHost();
//setLoading(false);
if (url.contains("/plugins/close_popup.php?reload")) {
final Handler handler = new Handler();
handler.postDelayed(() -> {
//Do something after 100ms
containerFb.removeView(mWebviewPop);
loadComments();
}, 600);
}
}
@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
//setLoading(false);
}
}
class UriChromeClient extends WebChromeClient {
@Override
public boolean onCreateWindow(WebView view, boolean isDialog, boolean isUserGesture, Message resultMsg) {
mWebviewPop = new WebView(ReadActivity.this);
mWebviewPop.setWebViewClient(new WebViewClient());
mWebviewPop.setVerticalScrollBarEnabled(false);
mWebviewPop.setHorizontalScrollBarEnabled(false);
mWebviewPop.setWebViewClient(new UriWebViewClient());
mWebviewPop.setWebChromeClient(this);
mWebviewPop.getSettings().setJavaScriptEnabled(true);
mWebviewPop.getSettings().setDomStorageEnabled(true);
mWebviewPop.getSettings().setSupportZoom(false);
mWebviewPop.getSettings().setBuiltInZoomControls(false);
mWebviewPop.getSettings().setSupportMultipleWindows(true);
mWebviewPop.setLayoutParams(new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT));
containerFb.addView(mWebviewPop);
WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj;
transport.setWebView(mWebviewPop);
resultMsg.sendToTarget();
return true;
}
@Override
public boolean onConsoleMessage(ConsoleMessage cm) {
Timber.i("onConsoleMessage: " + cm.message());
return true;
}
@Override
public void onCloseWindow(WebView window) {
}
}
Код работает нормально, и он отображает комментарий FB. Но Cra sh произойдет, когда я нажму кнопку фильтра в FB. Может ли кто-нибудь помочь мне справиться с этим крэ sh?