Проблемы с использованием посылок для отправки объекта неизвестного типа данных - PullRequest
2 голосов
/ 10 января 2011

На днях я задал вопрос об отправке объекта в действие, используя намерение в качестве посылки, но я не уверен, как это сделать в моей ситуации.У меня есть переменная типа object Object x;, которая установлена ​​примерно так: x = edit.getText().toString();, и в этом случае x становится объектом String, но у меня также есть возможность установить x как тип Integer и SQLDate.Глядя на примеры того, как отправить объект в виде посылки, мне кажется, что вы должны знать, что это за тип данных, даже перед тем, как создавать пользовательские типы данных.Любая помощь с этим будет принята с благодарностью, так как я полностью застрял в этом.

Поток:

Object x; - создан.

x = String object||Integer object||sqldate object - xприсваивается значение

i.putExtra("object", x); - х передается следующему действию после посылки.

Ответы [ 2 ]

2 голосов
/ 10 января 2011

Требование к данным, которые вы передаете inn, заключается в том, что они каким-то образом сериализуются, и да, и String, и Integer.Кроме того, если вы используете java.sql.Date, этот тип наследует util.Date, который, в свою очередь, наследует Serializable.Небольшая «проблема» заключается в том, что Intent.putExtra не имеет перегрузки, которая принимает Object в качестве типа параметра.Таким образом, вам придется «знать», какой тип данных вы хотите поместить:

if (goingToUseStringObject...)
{
    // use the CharSequence overload
    i.putExtra("object", stringObject);
}
else if (goingToUseIntegerObject...)
{
    // use the int overload
    i.putExtra("object", integerObject);
}
else if (goingToUseDateObject...)
{
    // use the Serializable overload
    i.putExtra("object", dateObject);
}
1 голос
/ 10 января 2011

Вместо того, чтобы иметь ссылку Object, которая может быть одним из 3 других типов данных, я бы предложил создать класс-оболочку, реализующий Parcelable, который хранит данные для вас.Если вы будете часто передавать эти данные, это сделает вашу жизнь намного проще.

...