Застрял на этом какое-то время. У меня есть webviewfragment, в котором есть html-файл, который я создал, загружен. В html-файле есть некоторый javascript, который позволит мне вызвать некоторые методы в моем приложении для Android. Вот HTML:метод, вызванный интерфейсом javascript wint update view
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title></title>
</head>
<body>
<img src="Guideline1.gif" usemap="#Guideline9" border="0" />
<map name="Guideline9" id="generalGuideline9">
<area shape="rect" coords="124,329,290,357" onClick="Android.TestMethod();" />
</map>
</body>
</html>
Код WebViewFragment выглядит следующим образом:
@SuppressLint("JavascriptInterface")
public class MyWebView extends WebViewFragment {
android.webkit.WebView wv;
String name2;
String fileName2;
String itemFileName;
CommunicateWithMyWebView mCallback;
public interface CommunicateWithMyWebView {
public void toggleActionBar();
public void addTab();
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
try {
mCallback = (CommunicateWithMyWebView) activity;
} catch (ClassCastException e) {
throw new ClassCastException(activity.toString()
+ " must implement CommunicateWithMyWebView");
}
}
@SuppressLint("SetJavaScriptEnabled")
@Override
public void onResume() {
super.onResume();
name2=getArguments().getString("name2");
fileName2=getArguments().getString("fileName2");
itemFileName = "file:///android_asset/" + fileName2 + ".html";
wv = getWebView();
wv.getSettings().setJavaScriptEnabled(true);
wv.addJavascriptInterface(new WebAppInterface(this.getActivity()), "Android");
wv.getSettings().setBuiltInZoomControls(true);
wv.getSettings().setLoadWithOverviewMode(true);
wv.getSettings().setUseWideViewPort(true);
wv.setLongClickable(true);
wv.setOnLongClickListener(new OnLongClickListener() {
public boolean onLongClick(View v) {
mCallback.toggleActionBar();
return false;
}
});
wv.loadUrl(itemFileName);
}
public class WebAppInterface {
Activity mContext;
WebAppInterface(Activity activity) {
mContext = activity;
}
@JavascriptInterface
public void TestMethod() {
mCallback.addTab();
}
}
}
Это заставляет меня до точки с моим webviewfragment вызова метода родительского деятельности, работает. MainActivity реализует интерфейс CommunicateWithMyWebView. Здесь часть основного кода активности, который имеет метод addTab():
public void addTab() {
tabsFrag.test1();
}
tabsFrag еще один фрагмент отображается в MainActivity. Вот код для функции test1() в tabsFrag:
public void test1() {
Log.d("MyApp", "" + b1.getText());
}
b1 есть кнопка внутри вкладки фраг. Этот код отлично работает, как я показал. Но если я сменю команду журнала, чтобы:
public void test1() {
b1.setVisibility(View.GONE);
}
Учитывая, что видимость Б1 была в настоящее время VISIBLE, это не изменит видимость на эмуляторе (но не врезаться, API 18), но будет простаивать и аварии на планшете я должен проверить. Вкладка галактики Samsung 4.0.4.
Если я вызываю метод test1() в tabsFrag из любого другого метода, пока действие не произошло из области карты, щелкните в html-файле, установив видимость, отлично работает без сбоев или чего-то еще.
Я не уверен, как реализовать try catch блоки здесь.
любая помощь, которую я мог получить, был бы замечательным.
спасибо. Я только что обнаружил, что прошлой ночью. Оно работает. Я приму свой ответ. – A2345sooted