FirstActivity.Java有一个FragmentA.Java叫startActivityForResult(). SecondActivity.Java调用finish()但onActivityResult永远不会被调用,这是用FragmentA.Java.
FirstActivity.Java
FragmentA.Java
startActivityForResult()
SecondActivity.Java
finish()
onActivityResult
FragmentA.Java代码:
@Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); // some code Intent i = new Intent(getActivity(), SecondActivity.class); i.putExtra("helloString", helloString); getActivity().startActivityForResult(i, 1); } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); getActivity(); if(requestCode == 1 && resultCode == Activity.RESULT_OK) { //some code } }
SecondActivity.Java代码:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //some code Intent returnIntent = new Intent(); returnIntent.putExtra("result", result); setResult(Activity.RESULT_OK,returnIntent); finish(); }
我曾尝试调试代码,但从onAcitvityResult()未被调用。
onAcitvityResult()
你必须写onActivityResult()在你FirstActivity.Java的如下
onActivityResult()
@Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); }
所以这将调用你的片段onActivityResult()
编辑: 解决方案是替换getActivity().startActivityForResult(i, 1);为startActivityForResult(i, 1);
getActivity().startActivityForResult(i, 1);
startActivityForResult(i, 1);