0

我正在开发一个 Android 应用程序,但我不知道该怎么做。

我有一个 Dog 类的实例。这个类有两个属性isMaleId(和另一个)。

如果我将这两个属性传递给另一个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);  
    }
}

我需要DogAddDogActivity.

传递这两个属性或传递mSelectedDog给哪个更好AddDogActivity

4

3 回答 3

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。

于 2013-06-09T14:38:17.997 回答
1

我会说通过mSelectedDog- 这对我来说似乎是适当的封装。这不是你最终想要做的吗?Dog作用于另一个Activity中的类对象?

如果Dog你需要更多的属性会发生什么?传递每个属性的解决方案对我来说不能很好地扩展。

于 2013-06-09T14:07:00.730 回答
0

正如 Ken Wolf 所建议的,我同意传递 Dog 对象而不是传递单个属性是一个更好的主意。我已经做到了,我也受苦了。想象一下,将来您想要传递更多属性,您将不得不再次对调用者进行更改。假设您想从多个点调用您的 AddDogActivity 类,那么您必须确保每个调用点都已更新。

大痛。相信我。

如果您决定传递 Dog 对象,我相信您将不得不序列化您的 Dog 类。

于 2013-06-09T14:17:23.683 回答