簡體   English   中英

膨脹的視圖

[英]Corrupted inflated view

這是我的場景:在我的應用程序中,我有一個Main活動,兩個片段和一個在后台運行的服務。 我使用以下代碼將這些片段附加到我的主要活動中:

        Fragment f1;
        f1=new loginfragment();
        FragmentTransaction ft=getFragmentManager().beginTransaction();
        ft.add(R.id.frame,f1);
        ft.commit();

哪個工作正常。 這些片段之一包含一個附加到適配器的列表視圖。(我已驗證適配器已正確附加到該列表視圖,並且可以將條目添加到該列表視圖而沒有任何問題。
為了能夠在listview適配器(擴展BaseAdapter)中增加一個布局,我創建了一個構造函數來向其提供Context。 后台服務會定期檢查頁面,並使用該片段實現的接口將結果發送到其中一個片段(發送廣播對我不起作用)。
接口的定義如下:

interface resultInterface{
   void receive(String s,Context con);
}


片段實現了這樣的接口:

@Override
    public void receive(String s,Context con){
        String elements[]=s.split("<br>");
        if(elements.length>1) {
            if(elements[0].equals("REQUEST")) {
                init_notification("REQUEST",detect(elements[1],elements[2]));// a function that shows a notification
                item i = new item(elements[1], elements[2]);
                orders.add(i);
                adapter = new listview_adapter(orders,c);
                list.setAdapter(adapter);}
        }
    }

orders是一個Arraylist,而c是要傳遞給listview適配器的上下文。 服務會像下面這樣調用此接口方法:

resultInterface resultinterface=new servefragment();
resulstinterface.receive(s,this);

在接收到數據后(導致調用接口方法),片段方法應該拆分數據並將條目添加到列表視圖中。(我已驗證數據已正確傳遞給接口方法。
但是,顯示為列表視圖條目的視圖不正確(看起來以某種方式損壞)。 這是它的外觀(使用偽數據): 像這樣
但實際上是這樣添加它們的(從服務器收到了1個項目,這是正確的,但布局卻不正確): 像這樣

如果您需要更多信息,請發表評論,我將其添加

我的猜測是,您的服務傳遞給您的Context對象具有與預期不同的主題。 這可能會導致文本顏色,按鈕顏色等全部更改。

為了能夠在listview適配器(擴展BaseAdapter)中增加一個布局,我創建了一個構造函數來向其提供Context。

除非您需要在getView()內之外的其他地方使用Context實例,否則不必通過構造函數傳遞Context 這是getView()方法的完整簽名:

public View getView(int position, View convertView, ViewGroup parent)

parent參數保證為非空,並且所有View實例都具有getContext()方法,因此您始終可以通過編寫parent.getContext()來檢索Context 此外,這將是您的活動 (與您的應用程序之類的東西不同),具有具有正確主題的附加好處。

因此,刪除將Context傳遞到您的適配器中的所有代碼,而只需使用parent.getContext() ,我敢打賭問題會消失。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM