java - 如何更改背景图片?

标签 java android

我研究了所有可能的答案,并找到了一些应该有效的答案:

int[] tabelazdjec={R.drawable.pic2,R.drawable.pic3};
LinearLayout mylay=(LinearLayout)findViewById(R.id.mylay);
@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.yess);
    Thread timer = new Thread(){
        public void run()
        {
            for(int i=0;i<tabelazdjec.length;i++)
            {
            try
            {

                mylay.setBackgroundResource(tabelazdjec[i]);
                sleep(500);
            }
            catch(Exception e)
            {
                e.printStackTrace();
            }

        }}
    };
    timer.start();

事实并非如此。该错误出现在我声明 LinearLayout 变量的第二行中。如果我将声明移至 try{}catch{} 部分,应用程序会运行,但 try{} 不会执行,因此肯定是这一行。 xml 文件如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:id="@+id/mylay"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@drawable/pic1" >


</LinearLayout>

抱歉,如果这个问题看起来微不足道,我花了几个小时盯着那行,找不到任何问题。可能是我瞎了……

最佳答案

在展开布局之前,您无法初始化View。将 LinearLayout 初始化移至 setContentView()

下面
LinearLayout mylay;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.yess);
    mylay=(LinearLayout)findViewById(R.id.mylay);
    Thread timer = new Thread(){

如果您尝试在使用 setContentView( 那样膨胀它们所属的 layout 之前初始化它们,您的 Views 将返回 null )

此外,正如 E.Odebugg 在评论中指出的那样,您正在尝试更新后台 Thread 中的 UI 元素,这将是您的下一个问题。您需要使用runOnUiThread()来更新UI

关于java - 如何更改背景图片?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18621816/

相关文章:

java - ArrayList<String?> 中的 "?"有什么用?

java - OSGi 部署管理服务的状态

android - 在 Android 中的操作栏标题上设置 OnClick 监听器

android - Google FusedLocationApi API 调用 onConnectionSuspended 的时间太多,我无法获取 GPS 位置

android - 如何获取谷歌位置历史/谷歌地图时间线数据?

android - SIGNAL 11 SIGSEGV 崩溃 Android

java - 两个分数的幂的最近倍数

java - 创建 ".bat"文件,运行它并从Java中删除它

java - 针对这种具体情况选择适当的布局

Android - 如何创建类似 Google Inbox 的个人资料 View ?