我用一些标签写了一个FragmentActivity.当我用startActivityForResult调用一个额外的活动(我用它来设置用户首选项)时(如果它在FragmentActivity或ListFragment中没有差异),当我启动这个首选项活动时,会调用onActivityResult方法,但是当我完成它时,不会调用我期待它(如果它在FragmentActivity或ListFragment中没有差异).在完成首选项活动后,此方法根本不会被调用.
我的问题是,我想在完成首选项活动后刷新当前选项卡(并设置上次使用的选项卡ID),我希望能够在onActivityResult方法中执行此操作.
这是创建首选项活动的类:
public abstract class ListFragmentBase<I> extends ListFragment implements LoaderCallbacks<List<I>> {
这是将我转发到此类中的首选项活动的方法:
protected void forwardToPreferences(int currentTab){ Intent intent = new Intent(getActivity(),GlobalPreferencesActivity.class); getActivity().startActivityForResult(intent,10); }
这是在调用上面的方法之后调用的方法,而不是在我完成被调用的活动之后调用的方法
@Override public void onActivityResult(int requestCode,int resultCode,Intent data) { super.onActivityResult(requestCode,resultCode,data); }
这是偏好活动:
public class GlobalPreferencesActivity extends Activity {
在那个课程中你会看到我如何调用finish方法:
TextView confirmSettings = (TextView) view.findViewById(R.id.confirm_settings); confirmSettings.setTextSize(PreferenceHelper.getSizeHeader(getApplicationContext())); confirmSettings.findViewById(R.id.confirm_settings).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if(BaseFragmentActivity.lastActivity != null){ BaseFragmentActivity.lastActivity.onRefreshData(); } ComponentName callingActivity = getCallingActivity(); GlobalPreferencesActivity.this.finish(); } });
解决方法
这是Android的一个bug
onActivityResult() called prematurely
和
Why does result from startActivityForResult come before activity really starts?
我不知道您使用的是哪个版本以及是否已经解决/纠正
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。