Если мы рассмотрим общие сценарии, в которых может быть выбрано это исключение, доступ к свойствам с объектом вверху.
Пример:
string postalcode=Customer.Address.PostalCode;
//if customer or address is null , this will through exeption
здесь, если адрес имеет значение null, то вы получите NullReferenceException.
Итак, в качестве практики мы всегда должны использовать проверку нуля, прежде чем обращаться к свойствам в таких объектах (особенно в общих)
string postalcode=Customer?.Address?.PostalCode;
//if customer or address is null , this will return null, without through a exception
Реализуем таким образом
String i="hi";
Intent i = new Intent(this, ActivityTwo.class);
//Create the bundle
Bundle b = new Bundle();
//Add your data to bundle
b.putString(“stuff”, i);
i.putExtras(b);
startActivity(i);
Начните эту секунду activity
, внутри этого class
, чтобы использовать значения Bundle, используйте этот код
Bundle bundle = getIntent().getExtras();
String text= bundle.getString("stuff");
Я знаю, что это уже поздно, но если переменную нужно получить доступ и изменить по нескольким намерениям, самый простой способ - использовать singleton. Определение глобальной переменной, которая будет доступна для всех целей.
Thats тривиально, используйте Intent.putExtra для передачи данных в действие, которое вы запускаете. Используйте затем Bundle.getExtra для его получения.
Уже есть много таких вопросов https://stackoverflow.com/search?q=How+to+pass+a+value+from+ one + Activity + to + another + in + Android обязательно используйте поиск в следующий раз.
Его простое Если вы передаете String X из A в B. A -> B
В действии A 1) Создайте намерение 2) Поместите данные в намерение с использованием метода намерения putExtra 3) Начните работу
Intent i = new Intent(A.this, B.class);
i.putExtra("MY_kEY",X);
В операции B внутри метода onCreate 1) Получить объект цели 2) Получить сохраненное значение с помощью ключа (MY_KEY)
Intent intent = getIntent();
String result = intent.getStringExtra("MY_KEY");
Это стандартный способ отправки данных из От A до B. вы можете отправить любой тип данных, это может быть int, boolean, ArrayList, String []. Основываясь на типе данных, который вы сохранили в действии как ключевом, метод получения пары значений может отличаться, как если бы вы передавали значение int, тогда вы вызовете
intent.getIntExtra("KEY");
. Вы даже можете отправить объекты класса, но для этого у вас есть чтобы ваш объект класса реализовал Serialzable или Parceable interaface.
Сколько данных вы можете отправить по размеру. Если данные превышают определенную величину, вы можете получить TransactionTooLargeException. Предположим, вы пытаетесь отправить растровое изображение по всей активности, и если размер превышает определенный размер данных, вы можете увидеть это исключение.
Стандартный способ передачи данных из одной активности в другую:
Если вы хотите отправить большое количество данных из одной активности в другую деятельность, вы можете поместить данные в пакет, а затем передать ее с помощью putExtra()
.
//Create the `intent`
Intent i = new Intent(this, ActivityTwo.class);
String one="xxxxxxxxxxxxxxx";
String two="xxxxxxxxxxxxxxxxxxxxx";
//Create the bundle
Bundle bundle = new Bundle();
//Add your data to bundle
bundle.putString(“ONE”, one);
bundle.putString(“TWO”, two);
//Add the bundle to the intent
i.putExtras(bundle);
//Fire that second activity
startActivity(i);
, в противном случае вы можете напрямую использовать putExtra()
с целью отправки данных и getExtra()
для получения данных.
Intent i=new Intent(this, ActivityTwo.class);
i.putExtra("One",one);
i.putExtra("Two",two);
startActivity(i);