Как отправить объект из одной операции Android в другую, используя Intents?

В bytearray есть встроенная функция, которая делает то, что вы намереваетесь.

bytearray.fromhex("de ad be ef 00")

Он возвращает bytearray и читает шестнадцатеричные строки с разделителем пространства или без него.

813
задан 8 revs, 5 users 45% 20 April 2018 в 16:53
поделиться

4 ответа

самое простое решение, которое я нашел is .. для создания класса со статическими элементами данных с геттерами и установщиками.

устанавливаются из одного действия и получают из другого действия этот объект.

действие A

mytestclass.staticfunctionSet("","",""..etc.);

действие b

mytestclass obj= mytestclass.staticfunctionGet();
5
ответ дан 22 November 2019 в 21:14
поделиться

Пути файлов включены в базу данных программирования « « Файлы »(.pdb). Такие файлы создаются во время компиляции и путей в этих файлах, так как на машине компиляции.

Вы можете удалить файлы .pdb из вашей установки, но таким образом, ваш след стека будет всего вдвое меньше, чем сейчас, поскольку он не скажет вам строку, на которой произошла ошибка. Обычно вы не запустите код в производственной среде с прикрепленными файлами PDB.

Если вы хотите сохранить «интересную трассировку стека», вы можете рассмотреть возможность выполнения строки замены имен папок, после того как вы позвонили ExceptionObject.tostring () .

-121--1577973-

Вам нужно сериализовать свой объект в какое-то строковое представление. Одним из возможных строковых представлений является JSON, и один из самых простых способов сериализации до / от JSON в Android, если вы спросите меня, проходит через Google Gson .

В этом случае вы просто поместите значение возвращаемого строки из (новый GSON ()). Tojson (myObject); и извлеките значение строки и используйте PROTJSON , чтобы включить его обратно в ваш объект.

Если ваш объект не очень сложен, это может не стоить накладных расходов, и вы могли бы рассмотреть возможность прохождения отдельных значений объекта вместо этого.

189
ответ дан 22 November 2019 в 21:14
поделиться

Если вы просто передаете объекты вокруг, то Parcelable был разработан для этого. Это требует немного больше усилий, чем использование собственной сериализации Java, но это путь быстрее (и я имею в виду путь, ПУТИ быстрее).

Из документов, простой пример для того, как реализовать:

// simple class that just has one member property as an example
public class MyParcelable implements Parcelable {
    private int mData;

    /* everything below here is for implementing Parcelable */

    // 99.9% of the time you can just ignore this
    @Override
    public int describeContents() {
        return 0;
    }

    // write your object's data to the passed-in Parcel
    @Override
    public void writeToParcel(Parcel out, int flags) {
        out.writeInt(mData);
    }

    // this is used to regenerate your object. All Parcelables must have a CREATOR that implements these two methods
    public static final Parcelable.Creator<MyParcelable> CREATOR = new Parcelable.Creator<MyParcelable>() {
        public MyParcelable createFromParcel(Parcel in) {
            return new MyParcelable(in);
        }

        public MyParcelable[] newArray(int size) {
            return new MyParcelable[size];
        }
    };

    // example constructor that takes a Parcel and gives you an object populated with it's values
    private MyParcelable(Parcel in) {
        mData = in.readInt();
    }
}

Обратите внимание, что в случае, если у вас есть более одного поля для извлечения из данного участка, вы должны сделать это в том же порядке, в котором они размещены (то есть в подходе FIFO).

Как только у вас есть свое орудие объектов Parcelable, это - просто вопрос помещения их в ваш Намерения с putExtra () :

Intent i = new Intent();
i.putExtra("name_of_extra", myParcelableObject);

Тогда вы можете задержать их с getParcelableExtra () :

Intent i = getIntent();
MyParcelable myParcelableObject = (MyParcelable) i.getParcelableExtra("name_of_extra");

, Если ваш Класс Объекта осуществляет Parcelable и сериализуемый тогда, удостоверяются, что вы действительно бросаете к одному из следующего:

i.putExtra("parcelable_extra", (Parcelable) myParcelableObject);
i.putExtra("serializable_extra", (Serializable) myParcelableObject);
735
ответ дан 22 November 2019 в 21:14
поделиться

Проще всего было бы просто использовать следующее, где элемент - строка:

intent.putextra("selected_item",item)

Для получения:

String name = data.getStringExtra("selected_item");
1
ответ дан 22 November 2019 в 21:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: