如何将Extras用于不同的活动?

时间:2012-01-09 00:33:32

标签: android android-intent bundle android-tabhost

例如,我有3个活动..当切换选项卡小部件时,我也使用带有单独活动的Tab主机。

1)FoodTypeListActivity.class:有一份食物类型清单,即早餐,晚餐,午餐......

2)MainTabActivity.class:Tabhost,它有3个标签小部件

3)FoodListActivity.class:此活动是标签小部件之一

我在MainTabActivity.class的布局中有一个标题,它会将食物类型显示为上一个活动的文本视图(FoodTypeListActivity.class

问题是; 我想从(FoodTypeListActivity.class)发送食物类型的名称,在(MainTabActivity.class)中设置为headlabel并发送食物类型的ID (FoodTypeListActivity.class)到(FoodListActivity.class

如何实现putExtra将数据发送到ListItem上的不同活动点击FoodTypeListActivity.class

现在我在FoodTypeListActivity.class

中有以下代码
lv.setOnItemClickListener(new OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View view,int position, long id) {


              if(position==0){
                Intent i = new Intent(FoodTypeListActivity.this, MainTabActivity.class);  

                i.putExtra("foodTypeID", 3);
                i.putExtra("foodTypeName", "Breakfast");
                startActivity(i);

              } 

            }
          });

谢谢你

2 个答案:

答案 0 :(得分:4)

您应该只使用共享偏好。

在列表视图中,单击使用此选项将值放在共享首选项中。

  SharedPreferences items = getSharedPreferences("my_food_data", 0);
  SharedPreferences.Editor editor = settings.edit();
  editor.putInt("foodTypeID", 3);
  editor.putString("foodTypeName", "Breakfast"); 
  editor.commit(); //VERY important

现在在任何活动使用中拉出数据..

   SharedPreferences items = getSharedPreferences("my_food_data", 0);
   int foodId = settings.getInt("foodTypeId", 0);
   String foodTitle = items.getString("foodTypeName", "No Name"); //the default value of of "no name will be used if nothing is in the preference file.

我认为这适用于你想要做的事情。

答案 1 :(得分:0)

看起来完全正确。现在,在您的接收活动中,只需使用以下代码来检索您的价值。

    int foodTypeId = getIntent().getIntExtra("foodTypeID", -1);
    String foodTypeName= getIntent().getStringExtra("foodTypeName");

如果给定键没有值,则-1是默认值。除非您忘记使用给定密钥传入值,否则永远不应该需要该默认值。