0

我构建了我的 custum android 应用程序。我需要使用 textView click 关闭 dilog 但我遇到了一些问题:我从 pythonanywhere 中托管的 python web 应用程序发送一个值到我的 android 活动然后在 android 对话框旁边但是当我点击txtclosee我有这个错误:

@SuppressLint({"NewApi", "SetJavaScriptEnabled"})
public class WebviewPREDICTActivity extends Activity {

    Dialog myDialog;

    WebView mWebViewDemo;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.fragment_gallery);

        myDialog = new Dialog(this);

        mWebViewDemo = (WebView) findViewById(R.id.wwebvieww);
        ButtonClickJavascriptInterface myJavaScriptInterface = new ButtonClickJavascriptInterface(WebviewPREDICTActivity.this);

        mWebViewDemo.addJavascriptInterface(myJavaScriptInterface, "MyFunction");
        mWebViewDemo.getSettings().setJavaScriptEnabled(true);
        mWebViewDemo.loadUrl("http://brahmiamine.pythonanywhere.com/predict");



    }

    public class ButtonClickJavascriptInterface {
        Context mContext;
        ButtonClickJavascriptInterface(Context c) {
            mContext = c;

        }
       //
        @JavascriptInterface
        public void onButtonClick(String TextInsideLi) {

            TextView txt5,txtclosee;
            //Button btnFollow;

            myDialog.setContentView(R.layout.show_profil);

            txt5=(TextView) myDialog.findViewById(R.id.message);
            txtclosee=(TextView) myDialog.findViewById(R.id.txtclosee);


         //   Toast.makeText(mContext, TextInsideLi, Toast.LENGTH_SHORT).show();
           // Log.i("myTag", TextInsideLi);
            //System.out.printf(String.valueOf(TextInsideLi));

            txt5.setText(TextInsideLi);

            txtclosee.setOnClickListener(new View.OnClickListener() {



                        @Override
                        public void onClick(View v) {

                    myDialog.dismiss();

                }
            });

            myDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
            myDialog.show();
        }
    }

}

我从 pythonanywhere 中托管的 python web 应用程序发送了一个值,其中包含 javascript 到我的 android 活动,然后在 android 对话框旁边,但是当我单击时txtclosee出现此错误:

2019-04-18 17:34:35.229 18526-18526/com.androiddeft.navigationdrawer E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.androiddeft.navigationdrawer, PID: 18526
    android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
        at android.view.ViewRootImpl.checkThread(ViewRootImpl.java:8525)
        at android.view.ViewRootImpl.doDie(ViewRootImpl.java:7332)
        at android.view.ViewRootImpl.die(ViewRootImpl.java:7317)
        at android.view.WindowManagerGlobal.removeViewLocked(WindowManagerGlobal.java:497)
        at android.view.WindowManagerGlobal.removeView(WindowManagerGlobal.java:435)
        at android.view.WindowManagerImpl.removeViewImmediate(WindowManagerImpl.java:131)
        at android.app.Dialog.dismissDialog(Dialog.java:462)
        at android.app.Dialog.-android_app_Dialog-mthref-0(Dialog.java:156)
        at android.app.-$Lambda$c44uHH2WE4sJvw5tZZB6gRzEaHI$1.$m$0(Unknown Source:4)
        at android.app.-$Lambda$c44uHH2WE4sJvw5tZZB6gRzEaHI$1.run(Unknown Source:0)
        at android.os.Handler.handleCallback(Handler.java:789)
        at android.os.Handler.dispatchMessage(Handler.java:98)
        at android.os.Looper.loop(Looper.java:164)
        at android.app.ActivityThread.main(ActivityThread.java:6944)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)
4

1 回答 1

0

你已经使用后台/工作线程来更新/访问 UI 元素,唯一的主线程可以做,否则一个异常,使用这个,java 代码

 runOnUiThread(new Runnable() {

    @Override
    public void run() {

        // Stuff that updates the UI

    }
});
于 2019-04-18T17:00:01.867 回答