要在Fragment中触发onActivityResult
方法,需要确保以下几点:
在Fragment中使用startActivityForResult
方法启动新的Activity。
在Fragment所在的Activity中重写onActivityResult
方法。
在Fragment中调用getParentFragment().startActivityForResult
方法,而不是直接调用startActivityForResult
方法。
以下是一个包含代码示例的解决方法:
在Fragment中的代码:
public class MyFragment extends Fragment {
// ...
public void startNewActivity() {
Intent intent = new Intent(getActivity(), MyActivity.class);
startActivityForResult(intent, REQUEST_CODE);
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_CODE) {
// 处理返回结果
}
}
}
在Activity中的代码:
public class MainActivity extends AppCompatActivity {
// ...
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
// 将结果传递给Fragment
Fragment fragment = getSupportFragmentManager().findFragmentById(R.id.fragment_container);
if (fragment != null) {
fragment.onActivityResult(requestCode, resultCode, data);
}
}
}
这样,在Fragment中启动的Activity返回结果时,onActivityResult
方法就会被触发。注意要替换代码中的MyActivity
为你自己的Activity类名,REQUEST_CODE
为你自己定义的请求码,以及R.id.fragment_container
为你的Fragment容器的ID。