替换时保存状态片段

时间:2021-01-17 08:36:38

标签: java android replace fragment

我使用片段。 当替换一个片段并且它支持 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)

1 个答案:

答案 0 :(得分:0)

每次调用 onCreateView 表示还没有任何视图,因此是剩余检查。

根据您的评论,我怀疑您想在静态上下文中保存视图引用,这是您不应该做的。相反,要真正“保存片段状态”,您应该使用提供的 Bundle savedInstanceState 实例来保存需要“缓存”的任何内容。

您应该简单地将数据保存在 onInstanceSaved 钩子中 - 它提供 Bundle 作为参数,并从 onCreateView 钩子中提供的包中恢复状态。

在这两个回调中存在那些包的存在仅仅是因为这个原因 - 如果需要保存/恢复其状态。

面向开发者的 Android 文档在此处详细描述了该机制https://developer.android.com/guide/fragments/saving-state#savedstate