簡體   English   中英

如何檢查是否有意圖發送的捆綁包?

[英]How can I check if there is a bundle sent with the intent?

我有一個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發送包之后也是如此。

從您的MainActivity您可以通過startActivityForResult啟動子GameActivity ,一旦完成,您就可以通過onActivityResult接收您的游戲結果。

像這樣的東西:

主要活動:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM