2012-10-31 73 views
0

在我的Android應用程序中有一個'管理玩家'的視圖,其中有'添加玩家'視圖。在「添加玩家」視圖中,我正在訪問攝像頭,因此我在onActivityResult上覆蓋了一個。當它遇到這種情況時,在「管理玩家」活動中,「添加玩家」視圖現在爲空。以下是代碼示例:Android的子視圖在父母活動的onActivityResult中爲null

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"); 
     } 
    } 
} 
} 

因此,在執行該操作後,onActivity結果中的addPlayerView爲null。誠實地說,我對Android和Java非常陌生,我是一個沒有MVC經驗的c#web開發人員,因此可能會誤解它的根本原理。但是,任何幫助將不勝感激!

謝謝, 安迪

回答

1

寫入該行的事件處理程序以上(即,外部的onEvent()。):

ManagePlayersActivity.this.addPlayerView = AddPlayerViewFactory.create(上下文);

+0

非常感謝。這阻止它爲空。現在的問題是視圖不再打開,並返回父視圖,關閉「添加播放器」視圖。這是一個簡單的改變,作爲其中的一部分,還是更廣泛的問題? –

+0

是攝像頭未被調用還是整個視圖未打開? – anz

相關問題