当我试图用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
答案 0 :(得分:0)
我现在通过使用解决方法修复它。 我现在在onResume()中重新加载我的AsyncTask,而不是仅仅从arraylist中删除一个项目并调用adapter.notifyDataSetChanged()。但它不是最好的解决方案。
答案 1 :(得分:0)
如果您在另一个片段中使用片段。你应该打电话
getParentFragment().startActivityForResult(i, SELECT_PICTURE);