[英]startactivityforresult() inside a listener not calling onActivityResult()
I know there are many similar questions on SO, but none of them resolved my issue. 我知道在SO上有很多类似的问题,但是没有一个解决了我的问题。
I am calling startActivityForResult inside a seekbar listener. 我正在搜索栏侦听器内调用startActivityForResult。 However, onActivityResult is not getting called. 但是,不会调用onActivityResult。 Here is my code. 这是我的代码。 What could be going wrong? 可能出什么问题了?
public class PeopleActivity extends SherlockFragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
volumeControl.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
int progressChanged = 0;
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
progressChanged = progress;
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
Intent in = new Intent(getActivity(), com.mytest.mytestninja.RangingActivity.class);
getActivity().startActivityForResult(in, 1);
}
});
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
rangeValue.setText("CALLED");
}
}
RangingActivity.java RangingActivity.java
public class RangingActivity extends Activity
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_ranging);
Intent returnIntent = new Intent();
returnIntent.putExtra("result", firstBeacon.toString());
setResult(RESULT_OK, returnIntent);
finish();
}
}
UPDATE 更新
Activity in which PeopleActivity fragment is used : 使用PeopleActivity片段的活动:
public class DrawerFrontActivity extends SherlockFragmentActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
bar = getSupportActionBar();
Drawable myIcon = getResources().getDrawable( R.drawable.bluebar);
bar.setBackgroundDrawable(myIcon);
SherlockFragment fragment;
fragment = new PeopleActivity();
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.rlDrawerHome, fragment);
transaction.commit();
setTitle("Home");
bar.setTitle("Home");
}
}
It seems you're calling getActivity().startActivityForResult(in, 1);
看来您正在呼叫getActivity().startActivityForResult(in, 1);
which would pass result back to activity and not fragment it self. 它将结果传递回活动,而不是自身分裂。
Try using PeopleActivity.this.startActivityForResult(in, 1);
尝试使用PeopleActivity.this.startActivityForResult(in, 1);
, this should pass result back to fragment. ,这应将结果传递回片段。
Refer to this answer for more details: https://stackoverflow.com/a/6147919/2146871 请参阅此答案以获取更多详细信息: https : //stackoverflow.com/a/6147919/2146871
Found the answer. 找到了答案。 The issue was because I was not calling super.onactivityresult in my fragment activity DrawerFrontActivity. 问题是因为我没有在片段活动DrawerFrontActivity中调用super.onactivityresult。 Hence 因此
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.