3

这是我的应用程序的简短草图

...
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.start);

    ... //at this place, getWindow().setBackgroundDrawableResource(int resid)
        //would work perfectly

    mainView();

}

void mainView() {
   setContentView(R.layout.main);

   ...

   if (...) {
     getWindow().setBackgroundDrawableResource(R.drawable.anyDrawable);
   }

   ...

}

但是在 mainView() 中,该方法不会产生任何影响。并且没有抛出异常。

main.xml 已经定义了背景图像,但 start.xml 没有这样做。这会导致我的问题吗?

或者我可以用其他方式更改背景图像吗?

4

1 回答 1

1

PS你不能再设置一次内容视图,你应该做的是在布局中让父视图具有像main这样的ID,然后使用

findViewById(R.id.main).setBackgroundDrawableResource(R.drawable.anyDrawable);

并且在 xml 布局中,您需要设置要设置的视图的 id(这应该是最顶层的视图)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="16dip" 
    android:id="@+id/main"></LinearLayout>

将 id 添加到视图后,您需要保存布局并构建项目

如果您想发布您的 xml 代码以及布局的名称,我可以为您写更多

于 2012-06-07T13:55:47.590 回答