Par*_*ikh 27 android android-fragments onactivityresult
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();
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是我开始的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);
Run Code Online (Sandbox Code Playgroud)
Aka*_*iya 77
如果你调用startActivityForResult()从Fragment,那么你应该调用startActivityForResult(),而不是getActivity().startActivityForResult(),因为它会导致Fragment的onActivityResult().
如果你不确定你在哪里打电话startActivityForResult()以及你将如何调用方法.
由于Activity获得了结果onActivityResult(),您将需要覆盖Activity's onActivityResult()并调用super.onActivityResult()以传播到相应Fragment的未处理结果代码或所有.
如果以上两个选项不起作用,那么请参考选项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);
}
Run Code Online (Sandbox Code Playgroud)
在儿童班:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
//in fragment class callback
}
Run Code Online (Sandbox Code Playgroud)
onActivityResult 调用但使用错误的意图引用从结果意图中获取数据:
getIntent().getStringExtra("teamName")
Run Code Online (Sandbox Code Playgroud)
替换为:
data.getStringExtra("teamName")
Run Code Online (Sandbox Code Playgroud)
这里的数据是结果意图。
我有类似的问题,我的问题是关于requestCode在startActivityForResult方法中设置为 -1 的参数。因此,当我将requestCode值更改为 1 或 0 时,onActivityResult开始被调用。
| 归档时间: |
|
| 查看次数: |
38091 次 |
| 最近记录: |