![](/img/trans.png)
[英]“Could not find class 'android.support.v4.app.FragmentActivity'” Error
[英]Error casting android.support.v4.app.FragmentActivity$NonConfigurationInstances to my AsyncTask
我面临代码行问题:
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;
}
当我尝试将值从配置实例传递给 mt 时出现错误,错误消息是
java.lang.ClassCastException: android.support.v4.app.FragmentActivity$NonConfigurationInstances 不能转换为 com.example.bermud06.p091_asynctaskdisplayrotate.MainActivity$MyTask
使用 API 级别 22 的 nexus 5 设备。
请改用getLastCustomNonConfigurationInstance()
。 来自FragmentActivity
的文档:
public Object onRetainCustomNonConfigurationInstance()
使用它代替
onRetainNonConfigurationInstance()
。 稍后使用getLastCustomNonConfigurationInstance()
检索。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.