Как я могу проверить, есть ли пакет, отправленный с намерением? - PullRequest
0 голосов
/ 04 марта 2011

У меня есть приложение Android, в котором есть два вида деятельности. На начальном этапе пользователь выбирает категорию, а на втором этапе пользователь играет в игру и получает результат. Этот результат затем возвращается к первому действию, которое будет опубликовано на Facebook.

Для передачи данных между действиями я использую этот код:

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 == null каждый раз, даже после завершения игры, и пакет отправляется из GameActivity.

1 Ответ

2 голосов
/ 04 марта 2011

С вашего MainActivity вы можете начать подпрограмму GameActivity через startActivityForResult, и как только она будет закончена, вы сможете получить результаты своей игры обратно через 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();
 }
...