Web 视图首先呈现,而其余活动为黑色



WebView遇到了一个非常奇怪的问题,决定询问可能遇到过类似行为的经验丰富的Android人员。场景如下:

  • 打开一个包含一堆文本视图和单个 Web 视图的活动。最初渲染一切都很好。
  • 从此活动打开另一个活动,该活动显示与第一个活动相关的一些其他详细信息。
  • 当用户单击"后退"按钮并且"详细信息"活动关闭时,我希望主活动能够正确呈现自身,但在 50% 的情况下,Web 视图会立即显示,而其余活动会黑屏约一秒钟。挺烦人的。

我使用以下代码填写活动控件:

void fillData(Context context){     
    Command cmd = cmdList.get(index);
    if(cmd.getTypeId() == CMD_TYPE_EXTENSION){
        cmdName.setText(cmd.getName());
        String extStr = DALHelper.getInstance().getExtensionName(Integer.toString(cmd.getExtensionId()));
        extName.setText(extStr.substring(0, extStr.length() - 1));
        cmdDesc.setText(cmd.getDescription());
    }else{
        String name=cmd.getName()
                .concat(" (")
                .concat(cmd.getDescription())
                .concat(")");
        cmdName.setText(name);
        cmdDesc.setText(cmd.getComments());
    }
    if(cmd.getSyntax() != null){
        String s = alignSyntaxText(cmd.getSyntax());            
        cmdSyntax.setText(s);
    }
    String params = DALHelper.getInstance().getHtmlParameters(Integer.toString(cmd.getId()));
    if(params.length() > 0){
        params = params.substring(DUMMY_TAG_INDEX);
        htmlParams.loadDataWithBaseURL("fake://not/needed", Utils.removeBadCharacters(params), "text/html", "utf-8", null);         
    }           
    scroll.fullScroll(ScrollView.FOCUS_UP);
}

最后一次调用 fullScroll() 可能是原因吗?

值得一提的是,WebView 与其他文本字段一起位于滚动视图中,但它包装了内容,因此那里没有双滚动故障。

谢谢

终于发现了问题。是由上面提到的对 fillData() 方法的双重调用引起的,第一次是在打开 Details 活动时,第二次是在主活动的 onResume() 中。很可能它导致了一些渲染故障,但不确定到底是什么。

最新更新