Java 父活动中onActivityResult中的Android子视图为空
在我的Android应用程序中有一个视图“管理玩家”,其中有一个“添加玩家”视图。在“添加播放器”视图中,我正在访问相机,因此我在onActivityResult上有一个覆盖。当点击此按钮时,在“管理玩家”活动中,“添加玩家”视图现在为空。以下是代码示例:Java 父活动中onActivityResult中的Android子视图为空,java,android,android-intent,Java,Android,Android Intent,在我的Android应用程序中有一个视图“管理玩家”,其中有一个“添加玩家”视图。在“添加播放器”视图中,我正在访问相机,因此我在onActivityResult上有一个覆盖。当点击此按钮时,在“管理玩家”活动中,“添加玩家”视图现在为空。以下是代码示例: public class ManagePlayersActivity { private AddPlayerView addPlayerView = null; private ManagePlayersView view;
public class ManagePlayersActivity {
private AddPlayerView addPlayerView = null;
private ManagePlayersView view;
private Context context;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
context = this;
view = ManagePlayersViewFactory.create(this);
setContentView(view.asView());
public void onEvent(ClickEvent event) {
final Dialog d = new Dialog(context);
ManagePlayersActivity.this.addPlayerView = AddPlayerViewFactory.create(context);
ManagePlayersActivity.this.addPlayerView.setButtonPhotoPickerOnClickListener(new EventListener<ClickEvent>() {
public void onEvent(ClickEvent event) {
ManagePlayersActivity.this.addPlayerView.setPlayerPhoto("Setting Photo");
PackageManager pm = context.getPackageManager();
if (pm.hasSystemFeature(PackageManager.FEATURE_CAMERA)) {
Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(cameraIntent, CAMERA_REQUEST);
}
}
});
d.show();
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == CAMERA_REQUEST) {
if (resultCode == RESULT_OK) {
ManagePlayersActivity.this.addPlayerView.setPlayerPhoto("Photo set");
}
}
}
}
公共类管理器PlayerActivity{
私有AddPlayerView AddPlayerView=null;
私有管理器PlayerView视图;
私人语境;
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
上下文=这个;
view=managePlayerViewFactory.create(此);
setContentView(view.asView());
public void onEvent(单击事件){
最终对话框d=新对话框(上下文);
ManagerPlayerActivity.this.addPlayerView=AddPlayerViewFactory.create(上下文);
managePlayerActivity.this.addPlayerView.setButtonPhotoPickerOnClickListener(新事件监听器(){
public void onEvent(单击事件){
managePlayerActivity.this.addPlayerView.setPlayerPhoto(“设置照片”);
PackageManager pm=context.getPackageManager();
if(pm.hasSystemFeature(PackageManager.FEATURE_摄像头)){
Intent cameraIntent=新的Intent(MediaStore.ACTION\u IMAGE\u CAPTURE);
startActivityForResult(摄像机帐篷、摄像机请求);
}
}
});
d、 show();
}
});
}
@凌驾
受保护的void onActivityResult(int请求代码、int结果代码、意图数据){
if(requestCode==CAMERA\u请求){
if(resultCode==RESULT\u OK){
managePlayerActivity.this.addPlayerView.setPlayerPhoto(“照片集”);
}
}
}
}
因此,执行此操作后,onActivity结果中的addPlayerView为null。老实说,我对Android和Java非常陌生,我是一名c#web开发人员,没有MVC方面的经验,因此这可能是对其基本工作原理的误解。但是,任何帮助都将不胜感激
谢谢,
Andy将这一行写在事件处理程序上方(即,在OneEvent()之外):
ManagerPlayerActivity.this.addPlayerView=AddPlayerViewFactory.create(上下文) 非常感谢。这就阻止了它为空。但现在的问题是视图不再打开,并返回到父视图,“添加播放器”视图关闭。这是一个简单的改变,作为其中的一部分,还是一个更广泛的问题?是相机没有被调用,还是整个视图没有打开?