AsyncLayoutInflater,gridLayout和旋转

时间:2016-09-12 08:45:00

标签: android layout-inflater

出于性能原因,我必须在新AsyncLayoutInflater的帮助下实现布局膨胀。一切都工作得很好,更平滑,但在按下后退按钮(或旋转设备等)后重新创建片段时会出现问题。网格布局突然不可见或相当无维度。一段代码以便更好地理解:

<?php
/**
*/
if(isset($_POST['form_name']) && $_POST['form_name'] == "zone") {
    if(verifyForm('zone', 'add')) {
        $msg = array();
        $msg['error'] = false;
        $msg['body']  = [];
        $zone_name = validate_data($_POST['zone_name']);
        $remark = validate_data($_POST['remark']);
        $errors = array();
        $check = mysqli_query($conn, "SELECT zone_name FROM zone WHERE uid ='$uid' AND zone_name = '$zone_name' ");
        $num_check = mysqli_num_rows($check);

        if(isset($zone_name, $remark)) {
            if(empty($zone_name)) {
                $msg['body'][] = 'Zone name required';
                $msg['error'] = true;
            } elseif($num_check > 0 ) {
                $msg['body'][] = 'Zone name already exists, choose another name';
                $msg['error'] = true;
            }

            if(!empty($errors)) {
                $msg['body'][] = '<div class="alert alert-danger">';
                $msg['body'][] = '<strong>OPPS! Correct the following error(s):</strong><br/>';
                foreach($errors as $er) {
                    $msg['body'][] = $er.'.<br/>';
                    $msg['error'] = true;
                }
                $msg['body'][] = '</div>';
            }

            if(empty($errors) && $msg['error'] === false) {
                $insert = mysqli_query($conn, "INSERT INTO zone (zone_name, uid, remark) VALUES('$zone_name', '$uid', '$remark') ");
                if($insert) {
                    $msg['body'][] = 'New zone added.';
                } else {
                    $msg['body'][] = "Can't add new zone.";
                    $msg['error'] = true;
                }
            }
        }
        $msg['body'] = implode('',$msg['body']);
        echo json_encode($msg);
    }
}
?>
<script type="text/javascript">
    $(document).ready(function() {
        $("#add_zone").submit(function(e) {
            e.preventDefault();
            $.ajax({
                url : 'add',
                data : $(this).serialize(),
                dataType : 'json',
                type : 'POST',
                beforeSend : function () {
                $("#submit_button").val("Wait...");
            },
                success : function ( result ) {
                $("#submit_button").val("Add New Zone");
                if (result.error) {
                    $('#form_result').append('<p class="alert alert-danger">'+result.body+'</p>');
                }
                else {
                    $('#form_result') . html(result.body);
                }
            },
            });
        });
    });
</script>

日志行描述了问题。当第一次进入片段时,网格被填充并拉伸到屏幕的match_parent。但是当旋转或进入下一个屏幕并返回时,网格仅填充而不是拉伸。 日志看起来像这样:

首先:1 1920x750,2 1920x750,3 1920x750,4 1920x750 ......

旋转:1 0x0,2 0x0,3,0x0,4 0x0 ......

P.S。:具有同步LayoutInflater的原始等效代码可以正常工作。

提前感谢您的帮助。

0 个答案:

没有答案