ProgressDialog在Tabhost不工作 [英] ProgressDialog in Tabhost Not Working

查看:129
本文介绍了ProgressDialog在Tabhost不工作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我用三个进度对话框在我的活动

  1. 的OnCreate()
  2. 当浏览到下一个页面
  3. 当浏览到previous页

但第一次后,当我点击翻页按钮,错误应用程序崩溃 WINDOW泄露

下面是我的code好心有人告诉我在做什么错

 公共类Request_Movies_Conatiner_Activity_REQUESTS扩展活动实现OnClickListener {

    字符串webrss,totalMovies;
    ProgressDialog对话框;

    ListView控件RequestedMoviesListView;
    RequestMoviesCustomAdapter moviesCustomAdapter;
    ArrayList的< RequestMovieListModel>适配器=新的ArrayList< RequestMovieListModel>();

    的LinearLayout requests_lineraLayout;

    按钮first_page_button1_request,next_page_button1_request;

    TextView的requests_textViewPages;
    INT T,设置= 1; //用于导航目的
    / **第一次创建活动时调用。 * /
    INT标签= 1,B;
    @覆盖
    公共无效的onCreate(包savedInstanceState){
        super.onCreate(savedInstanceState);

        的setContentView(R.layout.request_list_layout_requests);


        RequestedMoviesListView =(ListView控件)findViewById(R.id.requests_listView);
        RequestedMoviesListView.setFastScrollEnabled(真正的);

        requests_lineraLayout =(的LinearLayout)findViewById(R.id.request_linearLayout1);


        first_page_button1_request =(按钮)findViewById(R.id.first_page_button1_request);
        next_page_button1_request =(按钮)findViewById(R.id.next_page_button1_request);
        first_page_button1_request.setOnClickListener(本);
        next_page_button1_request.setOnClickListener(本);

        requests_textViewPages =(TextView中)findViewById(R.id.requests_textViewPages);

        webrss =的getString(R.string.requested_movies);
        Toast.makeText(getApplicationContext(),webrss,1).show();
        adapters.clear();
        moviesCustomAdapter =新RequestMoviesCustomAdapter(Request_Movies_Conatiner_Activity_REQUESTS.this,R.layout.show_categories_list,适配器);
        moviesCustomAdapter.clear();
        对话框= ProgressDialog.show(这一点,,请耐心等待...,真正的);
        线程线程=新主题(新的Runnable(){
            公共无效的run(){
                MovieRequests();
                runOnUiThread(新的Runnable(){
                    公共无效的run(){
                        如果(dialog.isShowing()){
                            RequestedMoviesListView.setAdapter(moviesCustomAdapter);
                            dialog.dismiss();
                            MovieCount();
                        }
                    }
                });
            }
        });
        thread.start();
    }

    私人无效MovieCount(){
        尝试 {
            URL yify =新的URL(webrss);
            的URLConnection TC = yify.openConnection();
            的BufferedReader在=新的BufferedReader(新的InputStreamReader(
                    tc.getInputStream()));
            串线;
            而((行= in.readLine())!= NULL){
                的JSONObject的JSONObject =新的JSONObject(线);
                totalMovies = jsonObject.getString(MovieCount);
                INT A =的Integer.parseInt(totalMovies);
                T =(A / 15)+1;

                requests_lineraLayout.setVisibility(View.VISIBLE);

                如果(组== 1){
                    requests_textViewPages.setText(1+ Integer.toString(吨));
                }
                其他{
                    requests_textViewPages.setText(套+的+ Integer.toString(吨));
                }

            }
        }赶上(最终MalformedURLException异常E){
            // TODO自动生成的catch块
            runOnUiThread(新的Runnable(){
                @覆盖
                公共无效的run(){
                    Toast.makeText(getApplicationContext(),e.​​getMessage()的toString(),Toast.LENGTH_LONG。).show();
                }
            });
            e.printStackTrace();
        }赶上(最终IOException异常E){
            runOnUiThread(新的Runnable(){
                @覆盖
                公共无效的run(){
                    Toast.makeText(getApplicationContext(),e.​​getMessage()的toString(),Toast.LENGTH_LONG。).show();
                }
            });
            e.printStackTrace();
        }赶上(最终JSONException E){
            // TODO自动生成的catch块
            e.printStackTrace();
            runOnUiThread(新的Runnable(){
                @覆盖
                公共无效的run(){
                    Toast.makeText(getApplicationContext(),e.​​getMessage()的toString(),Toast.LENGTH_LONG。).show();
                }
            });
        }
    }

    私人无效MovieRequests(){
        尝试 {
            URL yify =新的URL(webrss +&放大器;设置=+集);
            的URLConnection TC = yify.openConnection();
            的BufferedReader在=新的BufferedReader(新的InputStreamReader(
                    tc.getInputStream()));
            串线;
            而((行= in.readLine())!= NULL){

                的JSONObject的JSONObject =新的JSONObject(线);
                JSONArray JA =新JSONArray(jsonObject.getString(RequestList));

                的for(int i = 0; I< ja.length();我++){
                    的JSONObject祚=(的JSONObject)ja.get(我);
                    如果(jo.has(错误)){
                        Toast.makeText(getApplicationContext(),jo.getString(错误),Toast.LENGTH_LONG).show();
                    }
                    其他{
                        串REQUEST_ID = jo.getString(请求ID);
                        串m_title = jo.getString(MovieTitle);
                        串imdb_url = jo.getString(ImdbLink);
                        串m_cover = jo.getString(CoverImage);
                        串SHORT_DESCRIPTION = jo.getString(ShortDescription);

                        字符串genere = jo.getString(体裁);
                        串imdb_rating = jo.getString(MovieRating);
                        串DATE_ADDED = jo.getString(DateAdded);

                        串票= jo.getString(投票);
                        字符串requester_user_id = jo.getString(用户名);
                        字符串requester_user_name = jo.getString(用户名);


                        RequestMovieListModel request_movies =新RequestMovieListModel(REQUEST_ID,m_title,imdb_url,m_cover,SHORT_DESCRIPTION
                                ,genere,imdb_rating,DATE_ADDED,票,requester_user_id,requester_user_name);
                        //处理一种新发现的站
                        moviesCustomAdapter.add(request_movies);
                    }
                }
            }
        }赶上(MalformedURLException异常E){
            // TODO自动生成的catch块
            e.printStackTrace();
        }赶上(IOException异常E){
            // TODO自动生成的catch块
            e.printStackTrace();
        }赶上(JSONException E){
            // TODO自动生成的catch块
            e.printStackTrace();
        }
    }

    @覆盖
    公共无效的onClick(视图v){
        开关(v.getId()){
        案例R.id.first_page_button1_request:
            如果(组== 1){
                moviesCustomAdapter.clear();
                对话框= ProgressDialog.show(这一点,,请耐心等待...,真正的);
                线程线程=新主题(新的Runnable(){
                    公共无效的run(){
                        MovieRequests();
                        runOnUiThread(新的Runnable(){
                            公共无效的run(){
                                如果(dialog.isShowing()){
                                    RequestedMoviesListView.setAdapter(moviesCustomAdapter);
                                    dialog.dismiss();
                                    MovieCount();
                                }
                            }
                        });
                    }
                });
                thread.start();
            }
            其他{
                集=设置1;
                moviesCustomAdapter.clear();
                对话框= ProgressDialog.show(这一点,,请耐心等待...,真正的);
                线程线程=新主题(新的Runnable(){
                    公共无效的run(){
                        MovieRequests();
                        runOnUiThread(新的Runnable(){
                            公共无效的run(){
                                如果(dialog.isShowing()){
                                    RequestedMoviesListView.setAdapter(moviesCustomAdapter);
                                    dialog.dismiss();
                                    MovieCount();
                                }
                            }
                        });
                    }
                });
                thread.start();
            }
            打破;
        案例R.id.next_page_button1_request:
            套=套+ 1;
            moviesCustomAdapter.clear();
            对话框= ProgressDialog.show(这一点,,请耐心等待...,真正的);
            线程线程1 =新主题(新的Runnable(){
                公共无效的run(){
                    MovieRequests();
                    runOnUiThread(新的Runnable(){
                        公共无效的run(){
                            如果(dialog.isShowing()){
                                RequestedMoviesListView.setAdapter(moviesCustomAdapter);
                                dialog.dismiss();
                                MovieCount();
                            }
                        }
                    });
                }
            });
            thread1.start();
            打破;
        默认:
            打破;
        }
    }
}

06-19 18:59:37.319:ERROR /窗口管理器(14174):活动androlizer.yify.torrent.Request_Movies_Conatiner_Activity渗漏最初此处添加窗口com.android.internal.policy.impl.PhoneWindow$DecorView@2bec3268
06-19 18:59:37.319:ERROR /窗口管理器(14174):android.view.WindowLeaked:活动androlizer.yify.torrent.Request_Movies_Conatiner_Activity渗漏窗口com.android.internal.policy.impl.PhoneWindow$DecorView@2bec3268这是原本在这里添加
06-19 18:59:37.319:ERROR /窗口管理器(14174):在android.view.ViewRootImpl< INIT>(ViewRootImpl.java:344)
06-19 18:59:37.319:ERROR /窗口管理器(14174):在android.view.WindowManagerImpl.addView(WindowManagerImpl.java:267)
06-19 18:59:37.319:ERROR /窗口管理器(14174):在android.view.WindowManagerImpl.addView(WindowManagerImpl.java:215)
06-19 18:59:37.319:ERROR /窗口管理器(14174):在android.view.WindowManagerImpl $ CompatModeWrapper.addView(WindowManagerImpl.java:140)
06-19 18:59:37.319:ERROR /窗口管理器(14174):在android.view.Window $ LocalWindowManager.addView(Window.java:537)
06-19 18:59:37.319:ERROR /窗口管理器(14174):在android.app.Dialog.show(Dialog.java:278)
06-19 18:59:37.319:ERROR /窗口管理器(14174):在android.app.ProgressDialog.show(ProgressDialog.java:116)
06-19 18:59:37.319:ERROR /窗口管理器(14174):在android.app.ProgressDialog.show(ProgressDialog.java:99)
06-19 18:59:37.319:ERROR /窗口管理器(14174):在androlizer.yify.torrent.Request_Movies_Conatiner_Activity_REQUESTS.onClick(Request_Movies_Conatiner_Activity_REQUESTS.java:239)
06-19 18:59:37.319:ERROR /窗口管理器(14174):在android.view.View.performClick(View.java:3534)
06-19 18:59:37.319:ERROR /窗口管理器(14174):在android.view.View $ PerformClick.run(View.java:14263)
06-19 18:59:37.319:ERROR /窗口管理器(14174):在android.os.Handler.handleCallback(Handler.java:605)
06-19 18:59:37.319:ERROR /窗口管理器(14174):在android.os.Handler.dispatchMessage(Handler.java:92)
06-19 18:59:37.319:ERROR /窗口管理器(14174):在android.os.Looper.loop(Looper.java:137)
06-19 18:59:37.319:ERROR /窗口管理器(14174):在android.app.ActivityThread.main(ActivityThread.java:4441)
06-19 18:59:37.319:ERROR /窗口管理器(14174):在java.lang.reflect.Method.invokeNative(本机方法)
06-19 18:59:37.319:ERROR /窗口管理器(14174):在java.lang.reflect.Method.invoke(Method.java:511)
06-19 18:59:37.319:ERROR /窗口管理器(14174):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:784)
06-19 18:59:37.319:ERROR /窗口管理器(14174):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
06-19 18:59:37.319:ERROR /窗口管理器(14174):在dalvik.system.NativeStart.main(本机方法)
 

解决方案

您不关闭对话框中的第二个塔巴斯你刚才MovieCount以前做过的第一个选项卡()。

编辑:

 对话框= ProgressDialog.show(这一点,,请耐心等待...,真正的);
        线程线程=新主题(新的Runnable(){
            公共无效的run(){
                MovieRequests();
                runOnUiThread(新的Runnable(){
                    公共无效的run(){
                        如果(dialog.isShowing()){
                            ConfirmedMoviesListView.setAdapter(moviesCustomAdapter); dialog.dismiss();
                            MovieCount();
                        }
                    }
                });
            }
        });
        thread.start();
        }
    }
 

请参阅此部分......你是不是不屑一顾,把它在这里...这是我在这里提到的,你必须开除。

i use three progress dialog in my activity

  1. OnCreate()
  2. When navigating to next page
  3. When navigating to previous page

but after first time when I click next page button the application crashes with error WINDOW LEAKED

Here is my code kindly someone please tell what i am doing wrong

public class Request_Movies_Conatiner_Activity_REQUESTS extends Activity implements  OnClickListener{

    String webrss, totalMovies;
    ProgressDialog dialog; 

    ListView RequestedMoviesListView;
    RequestMoviesCustomAdapter moviesCustomAdapter;
    ArrayList<RequestMovieListModel> adapters = new ArrayList<RequestMovieListModel>();

    LinearLayout requests_lineraLayout;

    Button first_page_button1_request, next_page_button1_request;

    TextView requests_textViewPages;
    int t,set=1;//for navigation purposes
    /** Called when the activity is first created. */
    int tab=1, b;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.request_list_layout_requests);


        RequestedMoviesListView = (ListView)findViewById(R.id.requests_listView);
        RequestedMoviesListView.setFastScrollEnabled(true);

        requests_lineraLayout = (LinearLayout)findViewById(R.id.request_linearLayout1);


        first_page_button1_request = (Button)findViewById(R.id.first_page_button1_request);
        next_page_button1_request = (Button)findViewById(R.id.next_page_button1_request);
        first_page_button1_request.setOnClickListener(this);
        next_page_button1_request.setOnClickListener(this);

        requests_textViewPages = (TextView)findViewById(R.id.requests_textViewPages);

        webrss = getString( R.string.requested_movies);
        Toast.makeText(getApplicationContext(), webrss, 1).show();
        adapters.clear();
        moviesCustomAdapter = new RequestMoviesCustomAdapter(Request_Movies_Conatiner_Activity_REQUESTS.this, R.layout.show_categories_list, adapters);
        moviesCustomAdapter.clear();
        dialog = ProgressDialog.show(this, "", "Loading. Please wait...", true);
        Thread thread=new Thread(new Runnable(){
            public void run(){
                MovieRequests();
                runOnUiThread(new Runnable(){
                    public void run() {
                        if(dialog.isShowing()){         
                            RequestedMoviesListView.setAdapter( moviesCustomAdapter );
                            dialog.dismiss();
                            MovieCount();
                        }
                    }
                });
            }
        });
        thread.start();
    }

    private void MovieCount() {
        try {
            URL yify = new URL(webrss);
            URLConnection tc = yify.openConnection();
            BufferedReader in = new BufferedReader(new InputStreamReader(
                    tc.getInputStream()));
            String line;
            while ((line = in.readLine()) != null) {
                JSONObject jsonObject = new JSONObject(line);
                totalMovies = jsonObject.getString("MovieCount");
                int a = Integer.parseInt(totalMovies);
                t = (a/15)+1;

                requests_lineraLayout.setVisibility(View.VISIBLE);

                if (set == 1) {
                    requests_textViewPages.setText("1 of "+Integer.toString(t));
                }
                else{
                    requests_textViewPages.setText(set+" of "+Integer.toString(t));
                }

            }
        } catch (final MalformedURLException e) {
            // TODO Auto-generated catch block
            runOnUiThread(new Runnable(){
                @Override
                public void run() {
                    Toast.makeText(getApplicationContext(), e.getMessage().toString(), Toast.LENGTH_LONG).show();
                }
            });
            e.printStackTrace();
        } catch (final IOException e) {
            runOnUiThread(new Runnable(){
                @Override
                public void run() {
                    Toast.makeText(getApplicationContext(), e.getMessage().toString(), Toast.LENGTH_LONG).show();
                }
            });
            e.printStackTrace();
        } catch (final JSONException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            runOnUiThread(new Runnable(){
                @Override
                public void run() {
                    Toast.makeText(getApplicationContext(), e.getMessage().toString(), Toast.LENGTH_LONG).show();
                }
            });
        }
    }

    private void MovieRequests() {
        try {   
            URL yify = new URL(webrss+"&set="+set);
            URLConnection tc = yify.openConnection();
            BufferedReader in = new BufferedReader(new InputStreamReader(
                    tc.getInputStream()));
            String line;
            while ((line = in.readLine()) != null) {

                JSONObject jsonObject = new JSONObject(line);
                JSONArray ja = new JSONArray(jsonObject.getString("RequestList"));

                for (int i = 0; i < ja.length(); i++) {
                    JSONObject jo = (JSONObject) ja.get(i);
                    if (jo.has("error")) {
                        Toast.makeText(getApplicationContext(), jo.getString("error"), Toast.LENGTH_LONG).show();
                    }
                    else{
                        String request_id = jo.getString("RequestID");
                        String m_title = jo.getString("MovieTitle");
                        String imdb_url = jo.getString("ImdbLink");
                        String m_cover = jo.getString("CoverImage");
                        String short_description = jo.getString("ShortDescription");

                        String genere = jo.getString("Genre");
                        String imdb_rating = jo.getString("MovieRating");
                        String date_added = jo.getString("DateAdded");

                        String votes = jo.getString("Votes");
                        String requester_user_id = jo.getString("UserID");
                        String requester_user_name = jo.getString("Username");


                        RequestMovieListModel request_movies = new RequestMovieListModel(request_id, m_title, imdb_url, m_cover, short_description
                                ,genere, imdb_rating, date_added, votes, requester_user_id, requester_user_name);
                        // Process a newly found station
                        moviesCustomAdapter.add(request_movies);                        
                    }
                }
            }
        } catch (MalformedURLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (JSONException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.first_page_button1_request:
            if (set ==1) {
                moviesCustomAdapter.clear();
                dialog = ProgressDialog.show(this, "", "Loading. Please wait...", true);
                Thread thread=new Thread(new Runnable(){
                    public void run(){
                        MovieRequests();
                        runOnUiThread(new Runnable(){
                            public void run() {
                                if(dialog.isShowing()){         
                                    RequestedMoviesListView.setAdapter( moviesCustomAdapter );
                                    dialog.dismiss();
                                    MovieCount();
                                }
                            }
                        });
                    }
                });
                thread.start();
            }
            else{
                set = set-1;
                moviesCustomAdapter.clear();
                dialog = ProgressDialog.show(this, "", "Loading. Please wait...", true);
                Thread thread=new Thread(new Runnable(){
                    public void run(){
                        MovieRequests();
                        runOnUiThread(new Runnable(){
                            public void run() {
                                if(dialog.isShowing()){         
                                    RequestedMoviesListView.setAdapter( moviesCustomAdapter );
                                    dialog.dismiss();
                                    MovieCount();
                                }
                            }
                        });
                    }
                });
                thread.start();
            }
            break;
        case R.id.next_page_button1_request:
            set = set+1;
            moviesCustomAdapter.clear();
            dialog = ProgressDialog.show(this, "", "Loading. Please wait...", true);
            Thread thread1=new Thread(new Runnable(){
                public void run(){
                    MovieRequests();
                    runOnUiThread(new Runnable(){
                        public void run() {
                            if(dialog.isShowing()){         
                                RequestedMoviesListView.setAdapter( moviesCustomAdapter );
                                dialog.dismiss();
                                MovieCount();
                            }
                        }
                    });
                }
            });
            thread1.start();
            break;
        default:
            break;
        }
    }
}

06-19 18:59:37.319: ERROR/WindowManager(14174): Activity androlizer.yify.torrent.Request_Movies_Conatiner_Activity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@2bec3268 that was originally added here
06-19 18:59:37.319: ERROR/WindowManager(14174): android.view.WindowLeaked: Activity androlizer.yify.torrent.Request_Movies_Conatiner_Activity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@2bec3268 that was originally added here
06-19 18:59:37.319: ERROR/WindowManager(14174):     at android.view.ViewRootImpl.<init>(ViewRootImpl.java:344)
06-19 18:59:37.319: ERROR/WindowManager(14174):     at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:267)
06-19 18:59:37.319: ERROR/WindowManager(14174):     at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:215)
06-19 18:59:37.319: ERROR/WindowManager(14174):     at android.view.WindowManagerImpl$CompatModeWrapper.addView(WindowManagerImpl.java:140)
06-19 18:59:37.319: ERROR/WindowManager(14174):     at android.view.Window$LocalWindowManager.addView(Window.java:537)
06-19 18:59:37.319: ERROR/WindowManager(14174):     at android.app.Dialog.show(Dialog.java:278)
06-19 18:59:37.319: ERROR/WindowManager(14174):     at android.app.ProgressDialog.show(ProgressDialog.java:116)
06-19 18:59:37.319: ERROR/WindowManager(14174):     at android.app.ProgressDialog.show(ProgressDialog.java:99)
06-19 18:59:37.319: ERROR/WindowManager(14174):     at androlizer.yify.torrent.Request_Movies_Conatiner_Activity_REQUESTS.onClick(Request_Movies_Conatiner_Activity_REQUESTS.java:239)
06-19 18:59:37.319: ERROR/WindowManager(14174):     at android.view.View.performClick(View.java:3534)
06-19 18:59:37.319: ERROR/WindowManager(14174):     at android.view.View$PerformClick.run(View.java:14263)
06-19 18:59:37.319: ERROR/WindowManager(14174):     at android.os.Handler.handleCallback(Handler.java:605)
06-19 18:59:37.319: ERROR/WindowManager(14174):     at android.os.Handler.dispatchMessage(Handler.java:92)
06-19 18:59:37.319: ERROR/WindowManager(14174):     at android.os.Looper.loop(Looper.java:137)
06-19 18:59:37.319: ERROR/WindowManager(14174):     at android.app.ActivityThread.main(ActivityThread.java:4441)
06-19 18:59:37.319: ERROR/WindowManager(14174):     at java.lang.reflect.Method.invokeNative(Native Method)
06-19 18:59:37.319: ERROR/WindowManager(14174):     at java.lang.reflect.Method.invoke(Method.java:511)
06-19 18:59:37.319: ERROR/WindowManager(14174):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
06-19 18:59:37.319: ERROR/WindowManager(14174):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
06-19 18:59:37.319: ERROR/WindowManager(14174):     at dalvik.system.NativeStart.main(Native Method)

解决方案

Your are not dismissing the Dialog in the Second Tabas you have done in first tab just before MovieCount().

EDIT:

 dialog = ProgressDialog.show(this, "", "Loading. Please wait...", true);
        Thread thread=new Thread(new Runnable(){
            public void run(){
                MovieRequests();
                runOnUiThread(new Runnable(){
                    public void run() {
                        if(dialog.isShowing()){         
                            ConfirmedMoviesListView.setAdapter( moviesCustomAdapter );                  dialog.dismiss();
                            MovieCount();
                        }
                    }
                });
            }
        });
        thread.start();
        }
    }

See this part...you are not dismissing it here... That was where I mentioned that you have to dismiss.

这篇关于ProgressDialog在Tabhost不工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆