我现在面临的问题与代码行:
mt=(MyTask)getLastNonConfigurationInstance();
MT是MyTask类的实例
static class MyTask extends AsyncTask<String,Integer,Void>
{
MainActivity activity;
void link (MainActivity act)
{
activity=act;
}
void unlink()
{
activity=null;
}
@Override
protected Void doInBackground(String... params) {
try{
for(int i=1;i<=10;i++){
TimeUnit.SECONDS.sleep(1);
publishProgress(i);
Log.d("qwe", "i = " + i
+ ", MyTask: " + this.hashCode()
+ ", MainActivity: " + activity.hashCode());
}
}
catch (InterruptedException ie)
{
ie.printStackTrace();
}
return null;
}
@Override
protected void onProgressUpdate(Integer... values) {
super.onProgressUpdate(values);
activity.tv.setText("i = "+values[0]);
}
}
和我把它保存在onRetainCustomNonConfigurationInstance方法,当我尝试从传递价值
@Override
public Object onRetainCustomNonConfigurationInstance() {
mt.unlink();
return mt;
}
抵达时出错配置实例吨,错误消息
java.lang.ClassCastException: android.support.v4.app.FragmentActivity $ NonConfigurationInstances 不能转换到 com.example.bermud06.p091_asynctaskdisplayrotate.MainActivity $ MyTask
使用Nexus 5的设备符合API等级22
您是否按照[文档](http://developer.android.com/reference/android/support/v4/app/FragmentActivity.html)中的规定,尝试使用'getLastCustomNonConfigurationInstance()'而不是? – PPartisan
它的工作!非常感谢,PPartisan! –
Np。我也把它写成了答案。 – PPartisan