调用getExtra时,Boolean将自身重置为false

时间:2014-11-11 09:04:57

标签: android android-intent boolean

当我为我的isDeleted布尔值调用getExtras.getBoolean(key)时,它会将自己设置为false,即使我传入true也是如此。有关为何发生这种情况的任何见解?我已尝试了很多其他方法,但未能成功保持布尔值为TRUE。

其他活动:

   public void deleteWorkout(View view)
    {
        intent.putExtra("listPosition", intent.getExtras().getInt("position"));
        intent.putExtra("isDeleted", true);
        setResult(RESULT_OK, intent);
        finish();
    }

主要活动:

case(List): {
                if(resCode == Activity.RESULT_OK)
                {
                    boolean isDeleted = intent.getExtras().getBoolean("isDeleted");
                    int listPosition = intent.getExtras().getInt("listPosition");
                    if(isDeleted)
                    {
                        adapter.remove(workoutList.get(listPosition));
                        adapter.notifyDataSetChanged();
                    }
                }
            }
            default:
                break;
            }

2 个答案:

答案 0 :(得分:6)

有两种方式将一项活动传递给另一项活动。

1.将数据添加到意图中。

如何放:

intent.putExtra("listPosition", intent.getExtras().getInt("position"));
intent.putExtra("isDeleted", true);

如何获得:

int listPosition = getIntent().getIntExtra("listPosition",0);
boolean isDeleted = getIntent().getBooleanExtra("isDeleted",false);

2.添加数据以捆绑并将包添加到意图。

如何放:

Bundle bundle = new Bundle();
bundle.putExtra("listPosition", intent.getExtras().getInt("position"));
bundle.putExtra("isDeleted", true);
intent.putExtras(bundle)

如何获得:

int listPosition = getIntent().getExtras().getInt("listPosition",0);
boolean isDeleted = getIntent().getExtras().getBoolean("isDeleted",false);

答案 1 :(得分:3)

有两种方法可以解决这个问题,并了解为什么可能在将来再次为您节省头痛。

putExtrasputExtra不同。 那有什么区别?

putExtras期望传递一个包。使用此方法时,您需要使用以下方法撤回数据:

getIntent().getExtras().getBoolean("isDeleted");

putExtra期望(在您的情况下)字符串名称和布尔值。使用此方法时,您需要使用以下方法撤回数据:

getIntent.getBooleanExtra("isDeleted", false); // false is the default

你正在使用两者的混合,这意味着你试图从你实际没有设置的束中获取一个布尔值,所以它使用的是默认值(false)。