Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 34, средняя оценка - 4.91
grigorill
0 / 0 / 0
Регистрация: 27.01.2011
Сообщений: 5
#1

Смена BackGround - Android

16.03.2012, 20:07. Просмотров 4416. Ответов 14
Метки нет (Все метки)

Здравствуйте.Возникла такая проблема. Есть 3 кнопки и 3 картинки .png, надо чтобы при нажатии на 1 кнопку появлялась в качестве background 1 картинка при нажатии на 2-ю 2-ая и т.д.
Пытаюсь сделать так:
Java
1
2
3
4
5
6
7
8
Button butHistory=(Button)findViewById(R.id.butHistory);
        butHistory.setOnClickListener(new View.OnClickListener()
        {
            public void onClick(View v)
            {
                linearLayout.setBackgroundResource(R.drawable.fone_igri_vert_history);
            }
        });
При компиляции ошибок не выдает, но при нажатии на кнопку в эмуляторе вылетает. Я новичок в программировании поэтому за любую помощь, заранее спасибо.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
NiRamz
211 / 211 / 16
Регистрация: 26.12.2010
Сообщений: 691
16.03.2012, 22:19     Смена BackGround #2
Цитата Сообщение от grigorill Посмотреть сообщение
linearLayout.setBackgroundResource(R.drawable.fone_igri_vert_history);
linearLayout какие образом сюда присваиваешь значение?

в корневой элемент разметки (если там нет) добавить id и по нему потом ищи.
((LinearLayout) findViewById(R.id.тут_ид)).setBackgroundResoursce ...

примерно вот так получится.
petruchodd
16.03.2012, 22:25
  #3

Не по теме:

учись работать с Logcat'ом он облегчит тебе жизнь намного и не будет лишних вопросов.

NiRamz
16.03.2012, 22:33
  #4

Не по теме:

Так оно так, но по началу очень сложно сориентироваться в логах, которые выводятся. Особенно в плане разметки.

ЕвгенийС
0 / 0 / 0
Регистрация: 06.06.2012
Сообщений: 6
07.06.2012, 10:12     Смена BackGround #5
Такая же ситуация. Не понимаю как сделать, так чтобы по нажатию кнопки button1 из drawable загружалась luna1, button2 - luna2 итд.
<ImageView
android:id="@+id/images"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:src="@drawable/luna"
android:layout_gravity="center_horizontal|center"
android:layout_margin="5px"/>


Добавлено через 22 часа 11 минут
У меня, получаеться только критическая ошибка, помогите пожалуйста, третий день мучаюсь.

public class photoalbom extends Activity {

ImageView images=(ImageView)findViewById(R.id.images);
Button button1=(Button)findViewById(R.id.button1);


public void onClick(View v)
{
((LinearLayout)findViewById(R.id.images)).setBackgroundResource(R.drawable.luna1);
}

Наверное все очень плохо, но на java писать не умею, сижу над мануалами и примерами. Подскажите пожалуйста. Спасибо.
flashok
86 / 88 / 1
Регистрация: 14.02.2009
Сообщений: 293
07.06.2012, 11:24     Смена BackGround #6
((LinearLayout)findViewById(R.id.images)).setBackgroundResource(R.drawable.luna1 );

вот этой строчкой ты приводишь тип ImageView к LinearLayout, что не есть правильно

((ImageView)findViewById(R.id.images)).setBackgroundResource(R.drawable.luna1 );
ЕвгенийС
0 / 0 / 0
Регистрация: 06.06.2012
Сообщений: 6
07.06.2012, 14:46     Смена BackGround #7
Цитата Сообщение от flashok Посмотреть сообщение
((ImageView)findViewById(R.id.images)).setBackgroundResource(R.drawable.luna1 );
Да понял спасибо! Вот эта строка мне кажется тоже бесмысленой: ImageView images=(ImageView)findViewById(R.id.images); Смысла же нет слушать элемент Images? Заменил на ImageView images; Вроде бы для обьявления надо. Такой вопрос, надо в коде обьявлять сам рисунок? Указывать на него программе, что он есть в папке, или нет. Пока эклипс продолжает ругаться.
flashok
86 / 88 / 1
Регистрация: 14.02.2009
Сообщений: 293
07.06.2012, 14:52     Смена BackGround #8
ну если не усложнять пример разными разрешениями экрана, то ваш рисунок должен лежать в drawable

Java
1
2
ImageView images=(ImageView)findViewById(R.id.images);
Button button1=(Button)findViewById(R.id.button1);
эти строчки не нужны

а про слушать я не понял

Пока эклипс продолжает ругаться.
что пишет???
ЕвгенийС
0 / 0 / 0
Регистрация: 06.06.2012
Сообщений: 6
07.06.2012, 18:32     Смена BackGround #9
Хм, убрал эти две строки, критовать во время компиляции перестала, в логах только одна ошибка ActivityManager: Warning: Activity not started, its current task has been brought to the front
Но, и картинку не меняет. Да мне не нужно ничего усложнять с разрешением, просто замена. Не понимаю, тогда раз этих строк нет, как программа должна понять что иммено , button1 должна менять картинку? Я думал в этих строках как раз и ссылаемся на определеную кнопку. У меня получаеться из кода, осталось только это public void onClick(View v)
{
((ImageView)findViewById(R.id.images)).setBackgroundResource(R.drawable.luna1 );
}

Но так конечно работать не будет. Как ссослаться на кнопку button1?
flashok
86 / 88 / 1
Регистрация: 14.02.2009
Сообщений: 293
07.06.2012, 18:54     Смена BackGround #10
короче кинь проект я посмотрю
ЕвгенийС
0 / 0 / 0
Регистрация: 06.06.2012
Сообщений: 6
07.06.2012, 21:59     Смена BackGround #11
Цитата Сообщение от flashok Посмотреть сообщение
короче кинь проект я посмотрю
Хорошо, там есть рабочий код, взят из книги голощапова, алерет с двумя кнопками, на выйти или остаться, то что я пытался сделать, я откоментирую.


package evgen.test.photoalbom;

import android.R.layout;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.content.res.Resources;
import android.os.Bundle;
import android.view.View;
import android.graphics.drawable.TransitionDrawable;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;

public class photoalbomActivity extends Activity {


//----------------------------------------------------------------------------------------


public void onClick(View v)
{
((ImageView)findViewById(R.id.images)).setBackgroundResource(R.drawable.luna1 );
}


//Только этот блок в коментарии, остальное работает.
//-----------------------------------------------------------------------------------------

private final int IDD_EXIT = 0;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

final Button callButton = (Button)findViewById(R.id.brew_exit);
callButton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
showDialog(IDD_EXIT);
}
});

}

@Override
protected Dialog onCreateDialog(int id) {
switch (id) {
case IDD_EXIT:
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("Are you sure you want to exit?");
builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
photoalbomActivity.this.finish();
}
});
builder.setNegativeButton("No", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});


builder.setCancelable(false);
return builder.create();
default:
return null;


}



}
}
flashok
86 / 88 / 1
Регистрация: 14.02.2009
Сообщений: 293
07.06.2012, 22:01     Смена BackGround #12
киньте мне проект в архиве
или у вас там супер мего код которыв вы не хотите делиться?
просто мне так проще воспринимать код чем читать с форума
ЕвгенийС
0 / 0 / 0
Регистрация: 06.06.2012
Сообщений: 6
07.06.2012, 23:08     Смена BackGround #13
Нет конечно ничего мега. Вот залил на файлообменик. fayloobmennik.net/1955917
flashok
86 / 88 / 1
Регистрация: 14.02.2009
Сообщений: 293
08.06.2012, 00:09     Смена BackGround #14
http://dl.dropbox.com/u/20178650/photolab.zip
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.06.2012, 01:24     Смена BackGround
Еще ссылки по теме:

Android Изменение background layout 'а сторонней Activity
Android Background NavigationDrawer
Android Повторение Background
В андроид 4.3 и выше не выходит background картинка Android
Background меняет height компонента Android

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
ЕвгенийС
0 / 0 / 0
Регистрация: 06.06.2012
Сообщений: 6
08.06.2012, 01:24     Смена BackGround #15
Большое Спасибо! Помогли мне, даже больше чем ожидал. Все работает!
Yandex
Объявления
08.06.2012, 01:24     Смена BackGround
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru