有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java 安卓。看法WindowManager$BadTokenException:无法添加窗口,您的活动正在运行吗?

我有一个关于我的活动的弹出窗口,我的弹出窗口工作正常,直到我点击spinner,它给了我一个错误,如logcat所说:

    11-01 15:28:31.131: E/AndroidRuntime(10846): 安卓.view.WindowManager$BadTokenException: Unable to add window -- token 安卓.view.ViewRootImpl$W@41f56ec8 is not valid; is your activity running?
11-01 15:28:31.131: E/AndroidRuntime(10846):    at 安卓.view.ViewRootImpl.setView(ViewRootImpl.java:692)
11-01 15:28:31.131: E/AndroidRuntime(10846):    at 安卓.view.WindowManagerImpl.addView(WindowManagerImpl.java:345)
11-01 15:28:31.131: E/AndroidRuntime(10846):    at 安卓.view.WindowManagerImpl.addView(WindowManagerImpl.java:224)
11-01 15:28:31.131: E/AndroidRuntime(10846):    at 安卓.view.WindowManagerImpl$CompatModeWrapper.addView(WindowManagerImpl.java:149)
11-01 15:28:31.131: E/AndroidRuntime(10846):    at 安卓.view.Window$LocalWindowManager.addView(Window.java:556)
11-01 15:28:31.131: E/AndroidRuntime(10846):    at 安卓.widget.PopupWindow.invokePopup(PopupWindow.java:1013)
11-01 15:28:31.131: E/AndroidRuntime(10846):    at 安卓.widget.PopupWindow.showAsDropDown(PopupWindow.java:922)
11-01 15:28:31.131: E/AndroidRuntime(10846):    at 安卓.widget.ListPopupWindow.show(ListPopupWindow.java:595)
11-01 15:28:31.131: E/AndroidRuntime(10846):    at 安卓.widget.Spinner$DropdownPopup.show(Spinner.java:983)
11-01 15:28:31.131: E/AndroidRuntime(10846):    at 安卓.widget.Spinner.performClick(Spinner.java:608)
11-01 15:28:31.131: E/AndroidRuntime(10846):    at 安卓.view.View$PerformClick.run(View.java:17337)
11-01 15:28:31.131: E/AndroidRuntime(10846):    at 安卓.os.Handler.handleCallback(Handler.java:615)
11-01 15:28:31.131: E/AndroidRuntime(10846):    at 安卓.os.Handler.dispatchMessage(Handler.java:92)
11-01 15:28:31.131: E/AndroidRuntime(10846):    at 安卓.os.Looper.loop(Looper.java:137)
11-01 15:28:31.131: E/AndroidRuntime(10846):    at 安卓.app.ActivityThread.main(ActivityThread.java:4895)
11-01 15:28:31.131: E/AndroidRuntime(10846):    at java.lang.reflect.Method.invokeNative(Native Method)
11-01 15:28:31.131: E/AndroidRuntime(10846):    at java.lang.reflect.Method.invoke(Method.java:511)
11-01 15:28:31.131: E/AndroidRuntime(10846):    at com.安卓.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:994)
11-01 15:28:31.131: E/AndroidRuntime(10846):    at com.安卓.internal.os.ZygoteInit.main(ZygoteInit.java:761)
11-01 15:28:31.131: E/AndroidRuntime(10846):    at dalvik.system.NativeStart.main(Native Method)

这是我的代码:

   imgSearch.setOnClickListener(new OnClickListener(){
                public void onClick(View v) {

    //              Intent cari= new Intent(MerchantSimasCard.this,Pencarian.class);
    //              startActivity(cari);
                    LayoutInflater inflater = (LayoutInflater) getBaseContext().getSystemService(LAYOUT_INFLATER_SERVICE);
                    final View popupSet = inflater.inflate(R.layout.cari, null);
                    spin_all=(Spinner)popupSet.findViewById(R.id.spin_kategori);
                    spin_kota=(Spinner)popupSet.findViewById(R.id.spin_kota);
                    spin_abjad=(Spinner)popupSet.findViewById(R.id.spin_abjad);

                    search=(EditText)popupSet.findViewById(R.id.search);
                    buttonsearch=(Button)popupSet.findViewById(R.id.buttonsearch);

                    final PopupWindow pw = new PopupWindow(popupSet, LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, true);

                    new SpinnerKategori().execute();
                    buttonsearch.setOnClickListener(new OnClickListener() {

                        @Override
                        public void onClick(View v) {

                            if (ListMerchant.size()>0) {
                                ListMerchant.clear();
                                ListChildMerchantChild.clear();
                            }
            String url1 = null;
            try {
                url1 = "http://www3.abc.co.id/";
            } catch (UnsupportedEncodingException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
              pw.dismiss();
                    System.out.println(url1);
                    new TerbaruAsyncTask(url1).execute();
                        }

                    });
                    pw.showAtLocation(findViewById(R.id.merchantsimascard), Gravity.CENTER, 0, 0); 
                }

                });
public class SpinnerKategori extends AsyncTask<Void, Void, String>{
        String url ="http://www3.sinarmasmsiglife.co.id/E-Policy/ios/sc_merchant.htm?s=1";

        public SpinnerKategori(){
            this.url=url;
        }

        @Override
        protected void onPreExecute(){
            super.onPreExecute();
            dialog=ProgressDialog.show(MerchantSimasCard.this,"", "melakukan pengambilan data");
        }

        @Override
        protected String doInBackground(Void... params) {
            String result="";
            try {
                result=Connection.get(url);
            }catch (Exception e){
                result="";
            }
            return result;
        }

        @Override
        protected void onPostExecute(String result){
            super.onPostExecute(result);

            ParsingCategory(result.replace("\n", "").trim());
             ArrayAdapter<String> spinnerMenu = new ArrayAdapter<String>(MerchantSimasCard.this,R.layout.spinner_style, kategori);
             spinnerMenu.setDropDownViewResource(R.layout.spinner_dropdown);
                spin_all.setAdapter(spinnerMenu);

                ArrayAdapter<String> SpinnerKota = new ArrayAdapter<String>(MerchantSimasCard.this, R.layout.spinner_style, kota);
                SpinnerKota.setDropDownViewResource(R.layout.spinner_dropdown);
                spin_kota.setAdapter(SpinnerKota);  


                ArrayAdapter<String>  Spinnerabjad= new ArrayAdapter<String>(MerchantSimasCard.this,R.layout.spinner_style, abjad);
                Spinnerabjad.setDropDownViewResource(R.layout.spinner_dropdown);
                spin_abjad.setAdapter(Spinnerabjad);  
            dialog.dismiss();

        }
    }

    private void ParsingCategory(String result) {
        if (!result.equals("")) {
            try {
                JSONObject jsonObject = new JSONObject(result);

                JSONArray cat = jsonObject.getJSONArray("cat");

                for (int i=0; i<cat.length();i++){

                    JSONObject status = cat.getJSONObject(i);
                    String Category=status.getString("name");

                        kategori.add(Category);

                }
                JSONArray city=jsonObject.getJSONArray("cit");
                for (int j=0; j<city.length();j++){

                    String kot =  (String) city.get(j);
                        kota.add(kot);

                }
            }

            catch (Exception e) {
                Log.d("TEST CHART", e.getMessage());
            }
        }

}

我不知道如何找到我的错误,我希望有人能帮助我解决我的问题。谢谢!


共 (1) 个答案

  1. # 1 楼答案

    保存“onCreate”上的上下文,替换MerchantSimasCard。这与McContext或使用UI线程有关