Как избежать воссоздания фрагмента при нажатии кнопки «Назад» с помощью действий навигационной архитектуры?

Это проблема синтаксиса и кодирования против представления:

>>> print 1e3
1000.0

Как можно видеть ... это не печатает 1e3. Он печатает 1000.0. Но означает ли это, что 1e3 не равно 1000.0?

>>> print 1e3 == 1000.0
True

№. Он равен. Таким образом, 1e3 и 1000.0 являются семантически одинаковыми, но выглядят по-разному синтаксически.

>>> print "hi"
hi

, но затем:

>>> print hi
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'hi' is not defined

hi и "hi" можно считать семантически идентичными, но синтаксически они означают совершенно разные вещи. В какой печати он печатает «строчную версию» объекта / значения. Это не обязательно печатает его так же, как вы вводите его в код.

>>> class Animal:
...   def __str__(self):
...     return "Cat"
... 
>>> print Animal()
Cat

Это печатает Cat, но мы не можем использовать Cat для создания животного.

Теперь для синтаксиса списков в python требуются запятые. Также ... numpy массивы ARE NOT списки. У них разные типы. Даже если строковое представление WERE одинаково: «5» и 5 имеют одно и то же строковое представление, но:

>>> print "5"
5
>>> print 5
5

Просто потому, что str(a) == str(b) не означает, что a == b и не подразумевает type(a) == type(b).

они даже не одного типа. Одно целое, а другое - строка. Если вы определяете свой собственный тип, вы можете определить строковое представление для своего типа, но это не изменит синтаксис языка.

Что numpy делает что-то вроде этого:

>>> class Array:
...   def __init__(self, xs):
...     self.xs = xs
...   def __str__(self):
...     return "[%s]" % (" ".join(map(str, self.xs)))
... 
>>> arr = Array([1,2,3])
>>> arr
<__main__.Array instance at 0x7f783f257ef0>
>>> print arr
[1 2 3]

Он просто определяет строковое представление. В противном случае вы не сможете его распечатать:

>>> class Array:
...   def __init__(self, xs):
...     self.xs = xs
... 
>>> arr = Array([1,2,3])
>>> print arr
<__main__.Array instance at 0x7f783f257f38>

Однако мы не можем ожидать, что, когда мы вводим строковое представление чего-то в наш код, это правильный код ... потому что это просто строковое представление something ... это не обязательно действительный код.

0
задан user6667443 19 January 2019 в 10:30
поделиться

1 ответ

Я думаю, это нормально, что твой фрагмент 1 воссоздан, я думаю, у тебя есть контейнер с фрагментами. А когда вы переходите от фрагмента 1 к фрагменту 2, вы заменяете фрагмент 1 на макет фрагмента 2 с помощью FragmentTransaction.commit (). Если вы хотите управлять кнопкой «Назад» своего приложения, вы можете переопределить метод Onbackpresed в своем классе Mainactivity. что конкретно вы хотите делать, когда нажимаете кнопку возврата ??

0
ответ дан Ali Ismaeel 19 January 2019 в 10:30
поделиться
Другие вопросы по тегам:

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