Я делаю приложение викторины для математических формул. И из-за ограничений я использую «mathview extends webview», я хочу показать формулы в опциях викторины. Для этого я использую веб-просмотр для каждого из четырех вариантов в викторине, поэтому я хочу сделать весь веб-просмотр кликабельным, как кнопка. Как я могу это сделать?
Ниже приведен мой математический код и моя основная активность
public class MainActivity extends AppCompatActivity {
@BindView(R.id.activity_main)
LinearLayout linearLayout;
@BindView(R.id.math_view)
MathView mathView;
@BindView(R.id.second_layout)
FrameLayout secondLayout;
@BindView(R.id.input_view)
EditText inputView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.bind(this);
secondLayout.addView(mathView);
mathView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(MainActivity.this, "Clicked", Toast.LENGTH_LONG).show();
}
});
mathView.setText("Enter Formula");
inputView.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
mathView.setText(inputView.getText().toString());
}
});
}
}
public final class MathView extends WebView {
private String text;
private static final String TAG = MathView.class.getSimpleName();
private volatile boolean pageLoaded;
public MathView(Context context) {
super(context);
init(context);
}
public MathView(Context context, AttributeSet attrs) {
super(context, attrs);
init(context);
}
@SuppressLint("SetJavaScriptEnabled")
private void init(Context context) {
setBackgroundColor(Color.TRANSPARENT);
this.text = "";
this.pageLoaded = false;
// enable javascript
getSettings().setLoadWithOverviewMode(true);
getSettings().setJavaScriptEnabled(true);
// caching
File dir = context.getCacheDir();
if (!dir.exists()) {
Log.d(TAG, "directory does not exist");
boolean mkdirsStatus = dir.mkdirs();
if (!mkdirsStatus) {
Log.e(TAG, "directory creation failed");
}
}
getSettings().setAppCachePath(dir.getPath());
getSettings().setAppCacheEnabled(true);
getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
// disable click
setClickable(true);
setLongClickable(true);
getSettings().setUseWideViewPort(true);
// getSettings().setDefaultFontSize(200);
loadUrl("file:///android_asset/www/MathTemplate.html");
setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
pageLoaded = true;
loadUrl("javascript:showFormula('" + MathView.this.text + "')");
super.onPageFinished(view, url);
}
});
}
public void setText(String text) {
this.text = text;
if (pageLoaded) {
loadUrl("javascript:showFormula('" + MathView.this.text + "')");
} else {
Log.e(TAG, "Page is not loaded yet.");
}
}
public String getText() {
return text.substring(1, text.length() - 1);
}
}
Вот мой след стека:
2020-04-13 18:12:19.786 24367-24367/? I/hant.mathsampl: Not late-enabling -Xcheck:jni (already on)
2020-04-13 18:12:19.835 24367-24367/? W/hant.mathsampl: Unexpected CPU variant for X86 using defaults: x86
2020-04-13 18:12:20.083 24367-24367/com.nishant.mathsample I/hant.mathsampl: The ClassLoaderContext is a special shared library.
2020-04-13 18:12:20.874 24367-24367/com.nishant.mathsample W/hant.mathsampl: Accessing hidden method Landroid/view/View;->computeFitSystemWindows(Landroid/graphics/Rect;Landroid/graphics/Rect;)Z (light greylist, reflection)
2020-04-13 18:12:20.875 24367-24367/com.nishant.mathsample W/hant.mathsampl: Accessing hidden method Landroid/view/ViewGroup;->makeOptionalFitsSystemWindows()V (light greylist, reflection)
2020-04-13 18:12:20.924 24367-24367/com.nishant.mathsample I/WebViewFactory: Loading com.android.chrome version 69.0.3497.100 (code 349710017)
2020-04-13 18:12:20.934 24367-24367/com.nishant.mathsample I/hant.mathsampl: The ClassLoaderContext is a special shared library.
2020-04-13 18:12:21.047 24367-24367/com.nishant.mathsample I/cr_LibraryLoader: Time to load native libraries: 14 ms (timestamps 6511-6525)
2020-04-13 18:12:21.073 24367-24397/com.nishant.mathsample E/cr_VariationsUtils: Failed reading seed file "/data/user/0/com.nishant.mathsample/app_webview/variations_seed": /data/user/0/com.nishant.mathsample/app_webview/variations_seed (No such file or directory)
2020-04-13 18:12:21.090 24367-24367/com.nishant.mathsample I/chromium: [INFO:library_loader_hooks.cc(36)] Chromium logging enabled: level = 0, default verbosity = 0
2020-04-13 18:12:21.091 24367-24367/com.nishant.mathsample I/cr_LibraryLoader: Expected native library version number "69.0.3497.100", actual native library version number "69.0.3497.100"
2020-04-13 18:12:21.107 24367-24398/com.nishant.mathsample W/cr_ChildProcLH: Create a new ChildConnectionAllocator with package name = com.android.chrome, sandboxed = true
2020-04-13 18:12:21.149 24367-24367/com.nishant.mathsample I/cr_BrowserStartup: Initializing chromium process, singleProcess=false
2020-04-13 18:12:21.431 24367-24367/com.nishant.mathsample W/hant.mathsampl: Accessing hidden method Landroid/view/textclassifier/logging/SmartSelectionEventTracker;-><init>(Landroid/content/Context;I)V (light greylist, reflection)
2020-04-13 18:12:21.431 24367-24367/com.nishant.mathsample W/hant.mathsampl: Accessing hidden method Landroid/view/textclassifier/logging/SmartSelectionEventTracker;->logEvent(Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent;)V (light greylist, reflection)
2020-04-13 18:12:21.431 24367-24367/com.nishant.mathsample W/hant.mathsampl: Accessing hidden method Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent;->selectionStarted(I)Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent; (light greylist, reflection)
2020-04-13 18:12:21.431 24367-24367/com.nishant.mathsample W/hant.mathsampl: Accessing hidden method Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent;->selectionModified(II)Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent; (light greylist, reflection)
2020-04-13 18:12:21.431 24367-24367/com.nishant.mathsample W/hant.mathsampl: Accessing hidden method Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent;->selectionModified(IILandroid/view/textclassifier/TextClassification;)Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent; (light greylist, reflection)
2020-04-13 18:12:21.431 24367-24367/com.nishant.mathsample W/hant.mathsampl: Accessing hidden method Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent;->selectionModified(IILandroid/view/textclassifier/TextSelection;)Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent; (light greylist, reflection)
2020-04-13 18:12:21.431 24367-24367/com.nishant.mathsample W/hant.mathsampl: Accessing hidden method Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent;->selectionAction(III)Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent; (light greylist, reflection)
2020-04-13 18:12:21.431 24367-24367/com.nishant.mathsample W/hant.mathsampl: Accessing hidden method Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent;->selectionAction(IIILandroid/view/textclassifier/TextClassification;)Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent; (light greylist, reflection)
2020-04-13 18:12:21.504 24367-24418/com.nishant.mathsample W/cr_media: Requires BLUETOOTH permission
2020-04-13 18:12:21.596 24367-24367/com.nishant.mathsample D/AndroidRuntime: Shutting down VM
--------- beginning of crash
2020-04-13 18:12:21.599 24367-24367/com.nishant.mathsample E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.nishant.mathsample, PID: 24367
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.nishant.mathsample/com.nishant.mathsample.MainActivity}: java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2913)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6669)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
Caused by: java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
at android.view.ViewGroup.addViewInner(ViewGroup.java:5034)
at android.view.ViewGroup.addView(ViewGroup.java:4865)
at android.view.ViewGroup.addView(ViewGroup.java:4805)
at android.view.ViewGroup.addView(ViewGroup.java:4778)
at com.nishant.mathsample.MainActivity.onCreate(MainActivity.java:37)
at android.app.Activity.performCreate(Activity.java:7136)
at android.app.Activity.performCreate(Activity.java:7127)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2893)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6669)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
2020-04-13 18:12:21.630 24367-24367/com.nishant.mathsample I/Process: Sending signal. PID: 24367 SIG: 9