繁体   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