我使用片段。 当替换一个片段并且它支持 onCreateView 方法是调用和 从服务器检索数据。 如果使用 if(view==null) 来避免这种情况,那没关系。 正确吗?
import ijson
import csv
def convert_json(self, file_path):
did_write_headers = False
headers = []
row = []
iterable_json = ijson.parse(open(file_path, 'r'))
with open(file_path + '.csv', 'w') as csv_file:
csv_writer = csv.writer(csv_file, ',', '"', csv.QUOTE_MINIMAL)
for prefix, event, value in iterable_json:
if event == 'end_map':
if not did_write_headers:
csv_writer.writerow(headers)
did_write_headers = True
csv_writer.writerow(row)
row = []
if event == 'map_key' and not did_write_headers:
headers.append(value)
if event == 'string':
row.append(value)
答案 0 :(得分:0)
每次调用 onCreateView
表示还没有任何视图,因此是剩余检查。
根据您的评论,我怀疑您想在静态上下文中保存视图引用,这是您不应该做的。相反,要真正“保存片段状态”,您应该使用提供的 Bundle savedInstanceState
实例来保存需要“缓存”的任何内容。
您应该简单地将数据保存在 onInstanceSaved
钩子中 - 它提供 Bundle
作为参数,并从 onCreateView
钩子中提供的包中恢复状态。
在这两个回调中存在那些包的存在仅仅是因为这个原因 - 如果需要保存/恢复其状态。
面向开发者的 Android 文档在此处详细描述了该机制https://developer.android.com/guide/fragments/saving-state#savedstate