Динамический фон (на LinearLayout) - в чем моя ошибка? - PullRequest
1 голос
/ 14 сентября 2011

У меня проблема, я пытаюсь заставить фон моих приложений меняться каждые десять секунд, основываясь на таймере ... Я сделал то, что мог, и не могу решить, как я новичок в Java и программировании:) Я был бы рад, если бы кто-то мог просто исправить мой код, пожалуйста;) (Я могу упаковать его в телефон и т. Д. Затмение не показывает ошибку, но мое приложение закрывается, когда таймер отключается), вот оно:

public class CookBookActivity extends Activity {
    /** Called when the activity is first created. */

    private static final long GET_DATA_INTERVAL = 10000;
    int images[] = {R.drawable.smothie1,R.drawable.omletherb1};
    int index = 0;
    ImageView img;
    Handler hand = new Handler();
    private LinearLayout layout;

    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        this.setContentView(R.layout.main);
        layout = (LinearLayout)findViewById(R.id.linearLayout1);
        hand.postDelayed(run, GET_DATA_INTERVAL);
    }

    Runnable run = new Runnable() {
        public void run() {
            layout.setBackgroundDrawable(getDrawable(images[index++]));
            if (index == images.length)
                index = 0;
            hand.postDelayed(run, GET_DATA_INTERVAL);


        Typeface tf2 = Typeface.createFromAsset(getAssets(),
                "fonts/BPreplay.otf");
        TextView tv2 = (TextView) findViewById(R.id.textView2);
        tv2.setTypeface(tf2);


        Typeface tf = Typeface.createFromAsset(getAssets(),
                "fonts/BPreplay.otf");
        TextView tv = (TextView) findViewById(R.id.textView1);
        tv.setTypeface(tf);


        Button mainNext = (Button) findViewById(R.id.nextScreen1);
        mainNext.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                Intent i = new Intent();
                i.setClassName("com.unKnown.cookbook", "com.unKnown.cookbook.screen1");
                startActivity(i);

            }
        });
        }
    };

    protected Drawable getDrawable(int i) {
        // TODO Auto-generated method stub
        return null;
    }
}

РЕДАКТИРОВАТЬ :

Теперь я окончательно решил свою проблему, и мое изображение переходит в фоновый режим (благодаря помощи @Yashwanth Kumar и меня :)), это почти нормальносейчас, но теперь он устанавливает только одно изображение в качестве фона (каждые десять секунд он устанавливает одно и то же изображение), я думаю, что это сводится к одной из двух следующих вещей:

либо:

-хэндлер останавливается (в чем я сомневаюсь) - теперь я подтвердил, что он работает, и каждую секунду он выполняет процедуру, так что до второго выпуска

или:

он использует только первое изображение изсписок (R.drawable.omletherb1), в этом случаеМне придется установить что-то вроде того, если R.Drawable.zzz установлен, тогда установите изображение R.drawable.ccc

Пожалуйста, скажите мне, что вы думаете, и вот код, с которым я сейчас закончил:

открытый класс CookBookActivity extends Activity {/ ** Вызывается при первом создании действия.* /

private static final long GET_DATA_INTERVAL = 1000;
int images[] = {R.drawable.omletherb1,R.drawable.smothie1};
int index = 0;
LinearLayout img;
Handler hand = new Handler();
private LinearLayout layout;

public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    this.setContentView(R.layout.main);
    layout = (LinearLayout)findViewById(R.layout.main);
    hand.postDelayed(run, GET_DATA_INTERVAL);

    Typeface tf2 = Typeface.createFromAsset(getAssets(),
            "fonts/BPreplay.otf");
    TextView tv2 = (TextView) findViewById(R.id.textView2);
    tv2.setTypeface(tf2);


    Typeface tf = Typeface.createFromAsset(getAssets(),
            "fonts/BPreplay.otf");
    TextView tv = (TextView) findViewById(R.id.textView1);
    tv.setTypeface(tf);


    Button mainNext = (Button) findViewById(R.id.nextScreen1);
    mainNext.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            Intent i = new Intent();
            i.setClassName("com.unKnown.cookbook", "com.unKnown.cookbook.screen1");
            startActivity(i);

        }
    });
}

Runnable run = new Runnable() {
    public void run() {
        layout.setBackgroundDrawable(getDrawable(images[index++]));
        if (index == images.length)
            index = 0;
        hand.postDelayed(run, GET_DATA_INTERVAL);

    }
};

protected Drawable getDrawable(int i) {
    // TODO Auto-generated method stub
    return getResources().getDrawable(images[i%2]);
}

}

1 Ответ

2 голосов
/ 14 сентября 2011
layout.setBackgroundDrawable(getDrawable(images[index++]));

protected Drawable getDrawable(int i) {
    // TODO Auto-generated method stub
    return null;
}

Это проблема, вы устанавливаете нулевое значение для фона. Возвратите некоторый действительный объект рисования, и он будет работать.

...