要在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。