2011-03-04 3 views
0

두 가지 활동이있는 Android 애플리케이션이 있습니다. 시작 활동은 사용자가 카테고리를 선택하는 곳이며, 두 번째 활동은 사용자가 게임을하고 결과를 얻는 곳입니다. 이 결과는 다시 페이스 북에 게시 될 첫 번째 활동으로 전달됩니다. 이 두 가지를 간다인 텐트와 함께 전송 된 번들이 있는지 어떻게 확인할 수 있습니까?

Bundle extras = new Bundle(); 
       extras.putInt("categoryid", categoryid); 
       Intent i = new Intent(MenuView.this, CreateTestView.class); 
       i.putExtras(extras); 
       startActivity(i); 

:

은이 코드를 사용하여 활동 사이에 데이터를 전달합니다. 이제 내 문제 : MenuActivity를 처음 시작할 때 번들이 전달되지 않으므로 추가 기능을 검색하려고 할 때 nullpointer 예외가 발생합니다. 시작할 때 수표를 사용하여 전달 된 묶음이 있는지 여부를 확인하려면 어떻게해야합니까?

나는 이런 식으로 시도 :

Bundle b = this.getIntent().getExtras(); 
     if(b==null){} 
     else{ 
      noqs = b.getInt("noqs"); 
      point = b.getInt("point"); 

을하지만이 B로가는 == 널 때마다, 심지어 후 완료 게임 번들은 GameActivity에서 전송됩니다. 에서

답변

2

당신의 MainActivity 당신이 하위 GameActivitystartActivityForResult를 통해 시작할 수 있으며이 완료되면, 당신은 onActivityResult를 통해 다시 게임 결과를받을 수 있습니다. 이 같은

뭔가 :

MainActivity :

private void startGameActivity() { 
    Intent i = new Intent(getApplicationContext(), GameActivity.class); 
    i.putExtra("some.key.here", "value"); 
    startActivityForResult(i, 0); 
} 

@Override protected void onActivityResult(int req, int resp, Intent data) { 
    super.onActivityResult(req, resp, data); 
    // process your received "data" from GameActivity ... 
} 

GameActivity :

public void onCreate(Bundle savedInstanceState) { 
    // ... 
    Bundle b = getIntent().getExtras(); 
    // ... process your extras from MainActivity 
} 

public void finishMySubActivity() { 
    Intent data = new Intent(); 
    data.putExtra("some.other.key", GameResultsHere); 
    setResult(RESULT_OK, data); 
    finish(); 
} 
관련 문제