我正在开发一个Android应用程序,我怀疑该怎么做。
我有一个Dog类的实例。此类有两个属性isMale
和Id
(以及另一个属性)。
如果我将这两个属性传递给另一个Activity
:
public void onAddClick(View view)
{
if (mSelectedDog == null)
// TODO: Show a message to indicate that or maybe, the button add could be disabled.
;
else
{
Intent intent = new Intent(this, AddDogActivity.class);
// Pass to AddDogActivity if we are going to add a male or female dog.
Bundle b = new Bundle();
// Pass dog's sex.
b.putBoolean(Constants.ACT_ADD_DOG_IS_A_MALE, mSelectedDog.isMale());
// Pass dog's id
b.putInt(Constants.ACT_ADD_DOG_ID, mSelectedDog.getId());
intent.putExtras(b);
// TODO: Maybe it is better pass Dog instance instead of isMale and ID.
startActivity(intent);
}
}
我需要在Dog
上实例化另一个AddDogActivity
类对象。
哪个更好,通过这两个属性或将mSelectedDog
传递给AddDogActivity
?
答案 0 :(得分:1)
我会说传递mSelectedDog
- 这似乎是对我的适当封装。这最终不是你想做的吗?在另一个Activity中处理Dog
类对象?
如果您需要Dog
的更多属性,会发生什么?传递每个属性的解决方案对我来说不是很好。
答案 1 :(得分:1)
让你的Dog类实现Serializable,就是这样。然后你可以这样做:
intent.putExtra("selected_dog",mSelectedDog);
然后你可以使用Fragments:
以这种方式检索getArguments.getSerializable("selected_dog");
对于活动是:
getIntent().getExtras().getSerializable("selected_dog");
或:
getIntent().getSerializableExtra("selected_dog");
让“selected_dog”在你的应用中保持不变,记住密钥会更容易。
非常重要:如果你的Dog类有另一个类,例如Person或Owner,那么这个类也需要实现Serializable。
答案 2 :(得分:0)
主要疼痛。相信我。
如果您决定传递Dog对象,我相信您必须序列化您的Dog类。