意图发送不是故意收到的

时间:2011-07-02 03:44:12

标签: android android-intent extras

所以我试图在选择列表中的项目之后启动一个新活动....基于我读过的内容非常基本。我也试图在额外内容中发送一个值。所以我可以在列表中选择项目,新活动开始,额外设置,但附加项中的值为空。我注意到新活动的意图ID与第一个活动的意图不匹配。我不知道是否应该这样做。

来自活动1:

public void onItemClick(AdapterView<?> parent, View view,
              int position, long id) {
                  Intent displayIntent = new Intent(getApplicationContext(), DisplayActivity.class);
              int index  = _names.indexOf(((TextView) view).getText());
              displayIntent.putExtra("ID_TAG", ids.get(index));
              startActivity(displayIntent);
          }

在Activity2(DisplayActivity)

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Bundle extras = getIntent().getExtras(); 
        _hiveIndex = extras.getLong("ID_TAG");
}

任何想法为什么我不会得到价值? extras下的mMap在第一个intent中设置为哈希映射,但在activity2中为null。

3 个答案:

答案 0 :(得分:2)

displayIntent.putExtra(“ID_TAG”,ids.get(index))Activity1没有使用Bundle对象,要放置Bundle对象需要使用putExtras(Bundle bundle)方法而不是它。因为你试图得到在Actvitiy2中捆绑对象。您在Activity1 putExtra方法中传递除Bundle对象以外的其他对象,但是您试图在Activity2中获取Bundle对象,因此您什么也得不到。 displayIntent.putExtra(“ID_TAG”,ids.get(index));替换为 displayIntent.putExtras(您的捆绑对象) ;

或者您可以使用getIntExtra(String name, int defaultValue)方法。

答案 1 :(得分:0)

在Activity1中存储一个Integer。在Activity2中,您尝试检索Long。您需要在Activity2中使用getInteger或在Activity1中存储Long。理解?

答案 2 :(得分:0)

怎么样?

在DisplayActivity中,

使用getIntent().getIntExtra("ID_TAG")