当我试图用AsyncTask删除一个节目时。我想在AsyncTask完成后调用finish(),并返回带有结果的Intent。
来自活动:
new DeleteShowTask().execute();
Intent intent = new Intent(SeasonActivity.this, FragmentShows.class); // I'm not sure if this works
intent.putExtra("tvdbid", tvdbId);
setResult(DELETECODE, intent);
finish();
那么在片段中我有这样的:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Log.d("RESULTCODE", resultCode + "");
Log.d("REQUEST CODE", requestCode +"");
if (resultCode == SeasonActivity.DELETECODE)
{
if (requestCode == SeasonActivity.SHOW)
{
String tvdbid = data.getStringExtra("tvdbid");
for (int i = 0; i < adapter.getCount(); i++) {
SickbeardSerie serie = adapter.getItem(i);
if (serie.getTvdbId().equals(tvdbid))
{
adapter.remove(serie);
adapter.notifyDataSetChanged();
}
}
}
}
}
但它似乎并没有贯穿这个onAcitivityResult()
。正如你所看到的,我已经记录了onActivityResult()
,但我没有任何日志。我唯一得到的是:10-19 16:21:44.631: W/FragmentActivity(27672): Activity result fragment index out of range: 0x2fffe
我现在通过使用变通方法修复了它。我现在在onResume()中重新加载AsyncTask,而不是从arraylist中删除一个项并调用adapter.notifyDataSetChanged()。但这不是最好的解决方案。
如果在另一个片段中使用一个片段。你应该打电话给
getParentFragment().startActivityForResult(i, SELECT_PICTURE);