我用三个进度对话框在我的活动
的OnCreate() 当浏览到下一个页面 当浏览到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
OnCreate() When navigating to next page When navigating to previous pagebut 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.