Tabhost 中的 ProgressDialog 不工作

2023-12-11

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

  1. OnCreate()
  2. 当导航到下一页时
  3. 当导航到上一页时

但是当我第一次单击下一页按钮时,应用程序因错误而崩溃WINDOW LEAKED

这是我的代码,请有人告诉我做错了什么

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)

您不会忽略在 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();
        }
    }

看到这部分......你不是在这里驳回它......那是我提到你必须驳回的地方。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Tabhost 中的 ProgressDialog 不工作 的相关文章

  • 在android中通过BLE传输图像

    我使用以下代码传输 1 MB 的图像 如果在每个数据包之间实现线程延迟 则图像将成功传输 如果未设置线程延迟 则所有数据包均从BluetoothGattServer 发送 但BluetoothGattCallback 不会接收所有数据包 任
  • Android 如何更改 OnTouchListener 上的按钮背景

    你好 我在 xml 中有一个按钮 我正在使用OnTouchListener在我的活动中获得button按下并释放 但问题是 当我按下按钮时背景颜色没有改变 当我延长可能的活动时OnClickListener背景正在改变 任何人都可以告诉我的
  • android EditText 输入类型用于 StreetNumber 字段

    我试图在地址对话框的 streetNumber 字段中选择正确的 inputType 我想先显示数字键盘 然后让用户输入字母字符 对于一些非常特殊的情况 更接近这个的是 inputType datetime 但这不允许输入字母字符 那么如何
  • 放置在 NavigationDrawer 顶部的片段

    我正在尝试添加一个PreferenceFragment在我的应用程序中 问题是 它自动放置在我的顶部NavigationDrawer public class SetPreferenceActivity extends Activity O
  • Android Studio:未找到 Gradle DSL 方法:“classpath()”

    首先 我已阅读所有其他解决方案帖子以及有关迁移到 1 0 的官方文档 到目前为止 还没有任何效果 Error Error 23 0 Gradle DSL method not found classpath Possible causes
  • 如何在 Android 模块中使用 FirebaseAuth

    我正在开发一个聊天库 我想在其中显示登录用户的对话 制作该库的原因是我想将其集成到多个项目中 我现在面临的问题是FirebaseAuth表示用户尚未登录 FirebaseAuth getInstance mFirebaseApp getCu
  • 画透明圆,外面填充

    我有一个地图视图 我想在其上画一个圆圈以聚焦于给定区域 但我希望圆圈倒转 也就是说 圆的内部不是被填充 而是透明的 其他所有部分都被填充 请参阅这张图片了解我的意思 http i imgur com zxIMZ png 上半部分显示了我可以
  • 将 Firebase 云消息传递与 Windows 应用程序结合使用

    我在 Android 和 iOS 应用程序中使用 Firebase Cloud Messaging 但是我还有此应用程序的 Windows Mac OS 版本 我想保留相同的逻辑 我知道 Firebase Cloud Messaging 可
  • 使用 SQLITE 按最近的纬度和经度坐标排序

    我必须获得一个 SQLite SQL 语句 以便在给定初始位置的情况下按最近的纬度和经度坐标进行排序 这是我在 sqlite 数据库中的表的例句 SELECT id name lat lng FROM items EXAMPLE RESUL
  • Android 相机未保存在特定文件夹 [MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA]

    当我在 Intent 中使用 MediaStore INTENT ACTION STILL IMAGE CAMERA 时遇到问题 相机正常启动 但它不会将文件保存在我的特定文件夹 photo 中 但是当我使用 MediaStore ACTI
  • PhoneStateListener 不调用

    这是我的完整代码 广播示例 java package com example broadcast gt import android app Activity import gt android content Context import
  • HERE 地图:更改路线已行驶部分的颜色

    导航时可以改变路线的颜色吗 具体来说 我希望路线中已行驶的部分的颜色与即将行驶的部分的颜色不同 现在都是同一个颜色 将 MapRoute 对象的 TravelColor 变量设置为透明对我来说很有效 mapRoute color Resou
  • 如何在 Viewpager 中禁用预加载下一页? [复制]

    这个问题在这里已经有答案了 如何在 Viewpager 中禁用页面预加载 I tried viewPager setOffscreenPageLimit 0 但它不起作用 用这个viewPager setOffscreenPageLimit
  • 如何修改 Skobbler 注释而不重新添加它

    我必须修改 SKAnnotation 的图像 注释生成器代码 private SKAnnotation getAnnotationFromView int id int minZoomLvl View view SKAnnotation a
  • 按钮 - 单击时更改背景颜色

    我的活动中有 8 个按钮 我正在寻找的是 按钮具有默认背景 单击按钮时 背景颜色应更改为其他颜色 这部分非常简单 但是 当我单击任何其他按钮时 第一个按钮的背景颜色应该变回默认颜色 我知道这将使用 选择器状态 来完成 但我不太确定如何实现它
  • 如何在android asynctask中使用inputstream作为参数?

    我正在制作一个 Android 应用程序来跟踪股票详细信息 我将通过 csv 雅虎财经 检索数据 据我所知 在android 4 0中 网络连接无法在主线程上完成 因此 我将使用 asynctask 来建立连接 但是 我在参数方面遇到了一些
  • Android studio - 如何查找哪个库正在使用危险权限?

    我正在尝试将 apk 上传到 google play 商店 但令我惊讶的是 我正在使用以下权限 Your APK is using permissions that require a privacy policy android perm
  • Android:AsyncTask ProgressDialog 将不会在 ActivityGroup 中打开

    我试图在轮询我的服务器时打开一个进度对话框 该类是一个 ActivityGroup 因为它嵌套在选项卡栏中 为了将视图保持在框架内 需要 ActivityGroup 这是我的 ActivityGroup 类的声明 public class
  • javafx android 中的文本字段和组合框问题

    我在简单的 javafx android 应用程序中遇到问题 问题是我使用 gradle javafxmobile plugin 在 netbeans ide 中构建了非常简单的应用程序 其中包含一些文本字段和组合框 我在 android
  • Android 材料芯片组件崩溃应用程序。无法膨胀 xml

    Tried Chip来自两个支持库的组件 com google android support design 28 0 0 rc01和材料 com google android material material 1 0 0 rc01 堆栈

随机推荐