onActivityResult()
没有被调用。以下是我的代码:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// Check which request we're responding to
Log.e("CALLED", "OnActivity Result");
if (requestCode == TEAM_SELECTED_REQUEST_CODE) {
// Make sure the request was successful
if (resultCode == RESULT_OK) {
try {
mySelectedTeam = getIntent().getStringExtra("teamName");
txtSelectTeamCreateMatch.setText(mySelectedTeam);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
这是我开始SelectTeamActivity
:
Intent intent=new Intent(CreateMatch.this,SelectTeamActivity.class);
startActivityForResult(intent, TEAM_SELECTED_REQUEST_CODE);
//overridePendingTransition(R.anim.fade_in, R.anim.fade_out);
overridePendingTransition(R.anim.push_up_in, R.anim.push_up_out);
Intent intent = getIntent();
intent.putExtra("teamID", teamDataList.get(position).getTeamId().toString());
intent.putExtra("teamName", teamDataList.get(position).getTeamName().toString());
setResult(1, intent);
最佳答案
选项 1:
如果你从 Fragment
调用 startActivityForResult()
那么你应该调用 startActivityForResult()
而不是 getActivity() .startActivityForResult()
,因为它会导致Fragment
的onActivityResult()
。
如果您不确定在 startActivityForResult()
上调用的位置以及调用方法的方式。
选项 2:
由于Activity
得到onActivityResult()
的结果,你需要重写Activity
的onActivityResult()
并调用 super.onActivityResult()
以传播到相应的 Fragment
以获得未处理的结果代码或全部。
如果以上2个选项都不起作用,那么请引用选项3,因为它肯定会起作用。
选项 3:
从Fragment
到onActivityResult()
函数的显式调用如下
在父 Activity
类中,覆盖 onActivityResult()
甚至覆盖 Fragment
类中的相同并调用如下代码。
在父类中:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
Fragment fragment = getSupportFragmentManager().findFragmentById(R.id.dualPane);
fragment.onActivityResult(requestCode, resultCode, data);
}
在子类中:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
//in fragment class callback
}
关于android - onActivityResult() 未调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26988038/