我可以使用TabHost
方法将新标签添加到addTab()
。但这总是将标签添加为最后一个标签。如何在除TabHost
中的最后一个位置之外的其他位置添加标签?例如,如何将新标签作为第一个标签插入或插入其他任意位置?
我不想使用XML,但是所有操作都应以编程方式完成。
我想到的一个解决方案是,首先通过在clearAllTabs()
上调用TabHost
来删除所有标签,然后按照我想要的顺序重新添加所有标签。但这当然是一个非常棘手的解决方案。没有更好的了吗?
答案 0 :(得分:1)
显然没有。如果您查看DECLARE
l_xsl xmltype := xmltype(style_sheet_json);
l_xml xmltype;
l_json xmltype;
l_out clob;
BEGIN
l_xml := XMLTYPE (
'<ROWSET>
<ROW>
<ID>4</ID>
<DENOPAIS>Afganistán</DENOPAIS>
</ROW>
</ROWSET>');
dbms_output.put_line('Using explicit conversion of character entities :');
l_json := l_xml.transform(l_xsl);
l_out := dbms_xmlgen.convert(l_json.getclobval(), dbms_xmlgen.ENTITY_DECODE);
dbms_output.put_line(l_out);
dbms_output.new_line;
dbms_output.put_line('Using SQL function XMLTransform :');
select xmltransform(l_xml, l_xsl)
into l_json
from dual;
l_out := l_json.getclobval;
dbms_output.put_line(l_out);
dbms_output.new_line;
dbms_output.put_line('Using SQL functions XMLTransform and XMLCast :');
select xmlcast(xmltransform(l_xml, l_xsl) as clob)
into l_out
from dual;
dbms_output.put_line(l_out);
END;
/
Using explicit conversion of character entities :
{"ROWSET":{"ROW":{"ID":4,"DENOPAIS":"Afganistán"}}}
Using SQL function XMLTransform :
{"ROWSET":{"ROW":{"ID":4,"DENOPAIS":"Afganistán"}}}
Using SQL functions XMLTransform and XMLCast :
{"ROWSET":{"ROW":{"ID":4,"DENOPAIS":"Afganistán"}}}
PL/SQL procedure successfully completed.
源代码,则向TabHost
添加内容的唯一方法是通过mTabSpecs
方法。扩展类也无济于事,因为列表为addTab
。
因此,正如您所说的那样,使用private
是最省事的方式。我认为用例本身并不简单,因此我可以理解为什么实现这种行为不是那么简单。但是我不会称其为“非常hacky”的解决方案。没有进行Java反射,它只是使视图容器无效并向其中添加新的视图列表。它不会影响性能,内存,可读性,也不会因为SDK更新或类似问题而中断。所以我很确定这是完全可以的。