来自 FragmentActivity 的片段在某些设备上不显示背景图像

Posted

技术标签:

【中文标题】来自 FragmentActivity 的片段在某些设备上不显示背景图像【英文标题】:Fragment from FragmentActivity doesn't display background image on a few devices 【发布时间】:2013-02-14 03:35:24 【问题描述】:

所以基本上,我有一个可以在谷歌提供的所有设备和模拟器上运行的应用程序。但是有一些人报告没有背景图像,这使得文本无法阅读。请帮忙,我不知道应用程序哪里出错了。

这是我的 FragmentActivity 文件(基本部分)

public class MainActivity extends FragmentActivity

    private FragmentTabHost mTabHost;

    @Override

    protected void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);


        Bundle b1 = new Bundle();
        b1.putInt("tabId",111);

        Bundle b2 = new Bundle();
        b2.putInt("tabId",222);


        final FragmentManager fm = getSupportFragmentManager();

        mTabHost = (FragmentTabHost)findViewById(android.R.id.tabhost);
        mTabHost.setup(this, fm, R.id.realtabcontent);

        mTabHost.addTab(mTabHost.newTabSpec("main").setIndicator("MAIN"), TabContentFragment.class, b1);
        mTabHost.addTab(mTabHost.newTabSpec("massReading").setIndicator("MASS READING"), TabContentFragment.class, b2);        

        TabWidget tw = mTabHost.getTabWidget(); //this tabwidget is generated after "addTab", the one from layout is not doing anything        
        tw.setVisibility(0x00000008); // = "GONE"
    

和“activity_main”布局文件

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_
    android:layout_
    android:background="@drawable/bg"> *******//This is the background image I need to display********

    <LinearLayout 
        android:id="@+id/top"
        android:orientation="horizontal"
        android:layout_
        android:layout_
        style="@style/padding"
        android:gravity="center"
        android:background="@android:color/transparent"
        >
        <Button
            android:id="@+id/back"
            style="@style/btn"
            android:background="@drawable/back"
            />   
        <TextView
            android:id="@+id/title"
            android:layout_
            android:layout_
            android:layout_weight="1"
            android:textStyle="bold"
            style="@style/title"
            android:gravity="center"
            />  
        <Button
            android:id="@+id/down"
            style="@style/btn"
            android:background="@drawable/decrease"     
            android:layout_marginRight="15dp"  
            />                                      
        <Button
            android:id="@+id/up"
            style="@style/btn"
            android:background="@drawable/increase"                         
            />
    </LinearLayout>

    <android.support.v4.app.FragmentTabHost
        android:id="@android:id/tabhost"
        android:layout_
        android:layout_
        android:layout_weight="1"
        android:paddingLeft="10dp"
        android:paddingRight="10dp"
        android:background="@android:color/transparent"
        >

        <TabWidget
            android:id="@android:id/tabs"
            android:orientation="horizontal"
            android:layout_
            android:layout_
            />

        <FrameLayout
            android:id="@android:id/tabcontent"
            android:layout_
            android:layout_
            />

        <FrameLayout
            android:id="@+id/realtabcontent"
            android:layout_
            android:layout_
            />

    </android.support.v4.app.FragmentTabHost>

    <RadioGroup 
        android:layout_
        android:layout_ 
        android:orientation="horizontal"
        android:id="@+id/rg"
        >
        <RadioButton 
            android:id="@+id/main" 
            style="@style/rb"
            android:drawableTop="@drawable/reflection"
            android:text="@string/rb_left"
            />
        <RadioButton
            android:id="@+id/mr"
            style="@style/rb"
            android:drawableTop="@drawable/readings"
            android:text="@string/rb_right"
            />
    </RadioGroup>

</LinearLayout>

和只有 2 个 webviews 的 Fragment 文件

public class TabContentFragment extends Fragment 

    WebView wv;

    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
        if (container == null) 
            return null;
        


        Bundle b = getArguments();
        int tabId = b.getInt("tabId");

        wv = (WebView)inflater.inflate(R.layout.tab_content, container, false);

        wv.setId(tabId); 
        wv.setVerticalScrollBarEnabled(false);
        wv.setBackgroundColor(0);

        if(tabId==111)
           

            String htmlString = "<html xmlns='http://www.w3.org/1999/xhtml'>stuff</html>";          
            wv.loadDataWithBaseURL("",htmlString, "text/html", "UTF-8", "");
        
        else
        
            String htmlString = "<html xmlns='http://www.w3.org/1999/xhtml'>stuff</html>";          
            wv.loadDataWithBaseURL("",htmlString, "text/html", "UTF-8", "");
        

        return wv;
    

【问题讨论】:

这是我的应用程序play.google.com/store/apps/details?id=xt3.lent2011 的google play 商店链接,如果您想试用该应用程序,可以从xt3.com/files/Xt3Lent2013.3.3.apk 下载apk 文件并安装在您的设备上。谢谢 【参考方案1】:

检查抱怨未显示位图的设备的详细信息,查找 VM 预算。如果设备没有足够的内存来保存位图,则可以简单地将位图设置为空(或无背景)。鉴于您的症状,我会说这是问题所在。

【讨论】:

以上是关于来自 FragmentActivity 的片段在某些设备上不显示背景图像的主要内容,如果未能解决你的问题,请参考以下文章

当 FragmentActivity 在 Android 中进入后台时出现 NotSerializableException

android fragmentActivity 可以有意图吗?

Android - 如何从 FragmentActivity 访问 Fragment

带有 Fragments 和 FragmentActivity 的 TabHost

重新加载片段

使用 FragmentActivity 的 getSupportActionBar