gpt4 book ai didi

android.view.WindowLeaked 异常

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:50:49 28 4
gpt4 key购买 nike

我正在从 url 读取 xml 数据。它在纵向模式下运行良好。但我想将其更改为横向模式。但它得到 android.view.WindowLeaked 异常。

请帮我解决这个问题。提前致谢。这是我的代码。

package com.eisuru.abc;

import android.os.AsyncTask;
import android.os.Bundle;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.pm.ActivityInfo;
import android.view.Menu;
import android.widget.TextView;

public class MainActivity extends Activity {

TextView tvResponse;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

tvResponse = (TextView) findViewById(R.id.tvResponse);
new PostAsync().execute();
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}


class PostAsync extends AsyncTask<Void, Void, Void> {
ProgressDialog pd; XMLHelper helper;
@Override
protected void onPreExecute() {
pd = ProgressDialog.show(MainActivity.this, "Exchange Rates", "Loading Exchange rates values ...", true, false);
}

@Override
protected Void doInBackground(Void... arg0) {
helper = new XMLHelper(); helper.get();
return null;
}

@Override
protected void onPostExecute(Void result)
{
StringBuilder builder = new StringBuilder();
for(Exrate_values post : helper.exrates) {

builder.append("\n\t " + post.getDate());
builder.append("\t \t\t " + post.getFrom_currency());
builder.append("\t \t\t " + post.getTo_Currency());
builder.append("\t \t\t " + post.getExrt_buy());
builder.append("\t \t\t\t " + post.getExrt_sell());


builder.append("\n");

}
tvResponse.setText(builder.toString());
pd.dismiss();
}
}

}

最佳答案

当 Activity 上的对话框设置为可见但方向改变时,Activity 本身被销毁,然后会导致泄漏窗口错误。

有两种方法可以处理这种情况:-

方法一
因此,您需要在 Activity 的onStoponDestroy 方法中关闭 对话框。例如:

@Override
protected void onStop() {
super.onStop();

if(pd!= null)
pd.dismiss();
}

并在 Activity 类中定义对话框

ProgressDialog pd;

此链接将为您提供帮助 Handling progress dialogs and orientation changes

方法二
您必须将其添加到 list 中的 Activity 声明中:

android:configChanges="orientation"

看起来像

<activity android:label="@string/app_name" 
android:configChanges="orientation|keyboardHidden"
android:name="com.eisuru.abc.MainActivity">

问题在于,当配置发生变化时,系统会销毁 Activity 。参见 ConfigurationChanges .

因此将其放入配置文件可避免系统破坏您的 Activity 。相反,它会调用 onConfigurationChanged(Configuration) 方法。

关于android.view.WindowLeaked 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24545471/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com