簡體   English   中英

我如何將AlertDialog應用為AsyncTask中的服務器響應

[英]How i can apply alertDialog as server response in AsyncTask

我正在嘗試通過cPanel Hosting將項目app與在線數據庫連接。 我使用AlertDialog.BuildersetOnClickListener來顯示服務器的響應,但似乎我遇到了一些錯誤,任何答案都將不勝感激,謝謝

這是我的java文件。

//Calling my AsyncTask
@Override
 public void onClick(View view) {
 view.setEnabled(false);
 Intent launchactivity = new Intent(MainActivity.this,MainActivity.class);
 startActivity(launchactivity);

            tvscancontent = tvScanContent.getText().toString();
            tvscanformat = tvScanFormat.getText().toString();
            BackgroundTask backgroundTask = new BackgroundTask();
            backgroundTask.execute(tvscancontent,tvscanformat);
            finish();

            showShowView2();
           // displaynotification();

        }

    });

private class BackgroundTask extends AsyncTask<String,Void,String> { // i got crash here

        Context context;
        String add_info_url;
        private Object activity;




        public BackgroundTask() {

        }

        @Override
        protected void onPreExecute() {


            add_info_url = "http://www.d48.asia/shan/index.php";

            progressDialog = new ProgressDialog(MainActivity.this);
            progressDialog.setTitle("Processing...");
            progressDialog.setMessage("Authenticating...");
            progressDialog.setCancelable(false);
            progressDialog.setIndeterminate(true);
            progressDialog.setProgressStyle(progressDialog.STYLE_SPINNER);
            progressDialog.show();



        }

        @Override
        protected String doInBackground(String... args) {

            String tvscancontent = args[0];
            String tvscanformat = args[1];
            String response = "";
            String line = "";

            try {
                URL url = new URL(add_info_url);
                HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
                httpURLConnection.setRequestMethod("POST");
                httpURLConnection.setDoOutput(true);
                httpURLConnection.setDoInput(true);
                OutputStream outputStream = httpURLConnection.getOutputStream();
                BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream, "UTF-8"));
                String data_string = URLEncoder.encode("tvscancontent", "UTF-8") + "=" + URLEncoder.encode(tvscancontent, "UTF-8")+ "&" +
                        URLEncoder.encode("tvscanformat", "UTF-8") + "=" + URLEncoder.encode(tvscanformat, "UTF-8");
                bufferedWriter.write(data_string);
                bufferedWriter.flush();
                bufferedWriter.close();
                outputStream.close();
                InputStream inputStream = httpURLConnection.getInputStream();
                BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream,"iso-8859-1"));

                while ((line = bufferedReader.readLine()) != null){

                    response+= line;


                }


                bufferedReader.close();
                inputStream.close();
                httpURLConnection.disconnect();

                return response;


            } catch (MalformedURLException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }


            return null;


        }

        @Override
        protected void onProgressUpdate(Void... values) {
            super.onProgressUpdate(values);

        }

     //Server response
        @Override
        protected void onPostExecute(final String result) {
            //Toast toast =Toast.makeText(getApplicationContext(), result, Toast.LENGTH_LONG);
            //toast.setGravity(Gravity.CENTER ,0,0);
            //toast.show();
                AlertDialog.Builder alert = new AlertDialog.Builder(context); // also i got crash here
                    alert.setTitle("Third Wheel Response");
                    alert.setMessage(result);
                    alert.setCancelable(false);
                    alert.setPositiveButton("ok", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialogInterface, int i) {
                          dialogInterface.cancel();
                        }
                    });
                    AlertDialog dialogs = alert.create();
                    dialogs.show();


                if (progressDialog != null) {
                    progressDialog.dismiss();
                    SaveData.setEnabled(true);

                }

錯誤:

11-10 08:40:23.174 4815-4815 / com.thethirdwheelproject.thirdwheel E / AndroidRuntime:致命例外:主進程:com.thirdwheelproject.thirdwheel,PID:4815 android.view.WindowManager $ BadTokenException:無法添加窗口-令牌android.os.BinderProxy@bc0afcf無效; 您的活動正在進行嗎? 位於android.view.ViewRootImpl.setView(ViewRootImpl.java:678)位於android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:342)位於android.view.WindowManagerImpl.addView(WindowManagerImpl.java:93)位於android.app。 android.com.thirdwheelproject.thirdwheel.MainActivity $ BackgroundTask.onPostExecute(MainActivity.java:489)上的Dialog.show(Dialog.java:316),android.com.thirdwheelproject.thirdwheel.MainActivity $ BackgroundTask.onPostExecute(MainActivity.java:389)上的Dialog.show(Dialog.java:316) android.os.AsyncTask.-wrap1(AsyncTask.java)位於android.os.AsyncTask $ InternalHandler.handleMessage(AsyncTask.java:677)位於android.os.Handler的.os.AsyncTask.finish(AsyncTask.java:660) .dispatchMessage(Handler.java:102)在android.os.Looper.loop(Looper.java:154)在android.app.ActivityThread.main(ActivityThread.java:6077)在java.lang.reflect.Method.invoke( com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:866)上的com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756)11-10 08:40: 23.7 33 1334-1334 /? E / EGL_emulation:tid 1334:eglCreateSyncKHR(1901):錯誤0x3004(EGL_BAD_ATTRIBUTE)

在構造函數中設置上下文,如下所示

public BackgroundTask(Context context) {
    this.context = context;
}

您的上下文變量未初始化

刪除context變量,而改用MainActivity.this

試試這個

@Override
 public void onClick(View view) {
 view.setEnabled(false);
            tvscancontent = tvScanContent.getText().toString();
            tvscanformat = tvScanFormat.getText().toString();
            BackgroundTask backgroundTask = new BackgroundTask();
            backgroundTask.execute(tvscancontent,tvscanformat);
            showShowView2();
           // displaynotification();

        }

    });
        //Calling my AsyncTask
@Override
        public void onClick(View view) {
            view.setEnabled(false);

            tvscancontent = tvScanContent.getText().toString();
            tvscanformat = tvScanFormat.getText().toString();
            BackgroundTask backgroundTask =new BackgroundTask();
            backgroundTask.execute(tvscancontent,tvscanformat);

            showShowView2();
           // displaynotification();

        }

    });

//將數據插入數據庫進程私有類BackgroundTask擴展了AsyncTask {

    String add_info_url;


    public BackgroundTask() {

    }

    @Override
    protected void onPreExecute() {

        add_info_url = "http://www.d48.asia/shan/index.php";

        progressDialog = new ProgressDialog(MainActivity.this);
        progressDialog.setTitle("Authentication Process");
        progressDialog.setMessage("Loading....");
        progressDialog.setCancelable(false);
        progressDialog.setIndeterminate(true);
        progressDialog.setProgressStyle(progressDialog.STYLE_SPINNER);
        progressDialog.show();

    }

    @Override
    protected String doInBackground(String... args) {

        String tvscancontent = args[0];
        String tvscanformat = args[1];
        String response = "";
        String line = "";

        try {
            URL url = new URL(add_info_url);
            HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
            httpURLConnection.setRequestMethod("POST");
            httpURLConnection.setDoOutput(true);
            httpURLConnection.setDoInput(true);
            OutputStream outputStream = httpURLConnection.getOutputStream();
            BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream, "UTF-8"));
            String data_string = URLEncoder.encode("tvscancontent", "UTF-8") + "=" + URLEncoder.encode(tvscancontent, "UTF-8")+ "&" +
                    URLEncoder.encode("tvscanformat", "UTF-8") + "=" + URLEncoder.encode(tvscanformat, "UTF-8");
            bufferedWriter.write(data_string);
            bufferedWriter.flush();
            bufferedWriter.close();
            outputStream.close();
            InputStream inputStream = httpURLConnection.getInputStream();
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream,"iso-8859-1"));

            while ((line = bufferedReader.readLine()) != null){
                response+= line;
            }
            bufferedReader.close();
            inputStream.close();
            httpURLConnection.disconnect();

            return response;

        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        return null;

    }

    @Override
    protected void onProgressUpdate(Void... values) {
        super.onProgressUpdate(values);

    }

    @Override
    protected void onPostExecute(final String result) {
        super.onPostExecute(result);
                alert = new AlertDialog.Builder(MainActivity.this);
                alert.setTitle(" Third Wheel Response");
                alert.setMessage(result);
                alert.setCancelable(false);
                alert.setPositiveButton("Thanks", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                        Intent launchactivity = new Intent(MainActivity.this,MainActivity.class);
                        startActivity(launchactivity);


                    }
                });
                AlertDialog dialogs = alert.create();
                dialogs.show();

            if (progressDialog != null) {
                progressDialog.dismiss();
                SaveData.setEnabled(true);

            }


    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM