我正在从 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();
}
}
}
当活动上的对话框设置为可见但方向更改时,活动本身会被破坏,然后会导致泄漏窗口错误。
有两种方法可以处理这种情况:-
Method 1
因此,您需要dismiss
活动中的对话框onStop
or onDestroy
方法。例如:
@Override
protected void onStop() {
super.onStop();
if(pd!= null)
pd.dismiss();
}
并在活动类中定义对话框
ProgressDialog pd;
这个链接会对你有帮助处理进度对话框和方向变化 http://blog.doityourselfandroid.com/2010/11/14/handling-progress-dialogs-and-screen-orientation-changes/
Method 2
您必须将其添加到清单中的活动声明中:
android:configChanges="orientation"
所以看起来像
<activity android:label="@string/app_name"
android:configChanges="orientation|keyboardHidden"
android:name="com.eisuru.abc.MainActivity">
问题是,当配置发生更改时,系统会破坏该活动。看配置变更 http://developer.android.com/reference/android/app/Activity.html#ConfigurationChanges.
因此,将其放入配置文件中可以避免系统破坏您的活动。相反,它调用onConfigurationChanged(Configuration)
方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)