我通过以下代码更改线性布局背景图片:
mainlayout.setBackgroundResource(R.drawable.back);
但我希望每次活动开始时都这样做,首先启动并在活动之间切换。我将此代码放在onCreate()中的IF语句中,但后台不会更改!当然,当我将此代码设置为按钮工作正常!我必须如何以及在哪里放置我的代码?
我的完整代码是:
//check theme id
if(myDbHelper.gettheme()==1)
{
mainlayout.setBackgroundResource(R.drawable.back);
}else if(myDbHelper.gettheme()==2)
{
mainlayout.setBackgroundResource(R.drawable.blueback);
}
答案 0 :(得分:3)
您需要将代码放入onResume()方法。
以下是详细说明原因 http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle
答案 1 :(得分:2)
您可能需要参考Android activity lifecycle,但我建议使用onResume()
方法。
答案 2 :(得分:1)
如果你想每次都这样做,为什么不在layout.xml中将它定义为mainLayout的背景?否则,请使用onResume()而不是onCreate()。
答案 3 :(得分:1)
我假设你的代码片段基于你已经在项目中将你想要的图像作为可绘制资源的背景。如果是这样,你可以直接进入XML并添加到linerayout中:
android:background="@drawable/back"
这应该只是在XML布局中设置背景,避免必须在其中一个活动生命周期函数中设置代码。
虽然在这种情况下你需要不同的主题,就像我在原帖中看到的那样(自从我打字以来似乎被编辑过),你可以尝试存储用户想要的R.drawable的常量int作为背景或主题,并让你的DB Helper的getTheme()返回该引用,以设置没有if语句的背景。
这样说用户将他们的偏好更改为R.drawable.black或.blueback将DB存储在DB中,以便通过gettheme而不是1或2枚举返回。不确定这是否是最好的做法。