Итак, в основном у меня есть ImageButton с именем boutonPortail
, а другой - logo
. Инициализация boutonPortail
работает нормально, но когда я назначаю его слушателю с boutonPortail.setOnClickListener(boutonPortailListener);
, приложение падает, и я не знаю, почему вообще. Это не проблема с слушателем, поскольку, когда я назначаю его logo
, он работает нормально. Я сомневаюсь, что это проблема с XML, поскольку я копирую/вставляю код logo
.Android: ImageButton вызывает сбой при назначении слушателя
Мое приложение запрашивает пароль, и если пароль правильный, он переключается на другой вид с помощью logo
и boutonPortail
. Обратите внимание, что в окне просмотра пароля также есть logo
.
Проблема в том, что boutonPortail
нет на главном экране? Я попытался назначить слушателя после переключения представлений, но он по-прежнему падает.
EDIT: После того, как кнопка была на главном экране, проблема в том, что кнопка не находится в главном окне, когда я помещаю ее в основной режим, она отлично работает. Почему он падает?
Также по какой-то причине я не могу изменить изображение кнопки с boutonPortail.setImageResource(R.drawable.boutonfermer);
. (Это не происходит, когда он находится в главном окне)
OnCreate метод:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
logo = (ImageButton)findViewById(R.id.logo);
boutonPortail = (ImageButton)findViewById(R.id.boutonPortail);
codeEntered = (EditText)findViewById(R.id.codeEntered);
codeSurNotice = (TextView)findViewById(R.id.codeSurNotice);
//attribute all listeners
logo.setOnClickListener(boutonPortailListener);
codeEntered.addTextChangedListener(textWatcher);
codeEntered.setOnKeyListener(codeEnteredListener);
Способ изменить вид:
void codeCorrect() {
setContentView(R.layout.activity_readytopress);
boutonPortail.setOnClickListener(boutonPortailListener); //this line crashes the app, even if put in the onCreate
}
СЛУШАТЕЛЬ:
private OnClickListener boutonPortailListener = new OnClickListener() {
@Override
public void onClick(View v) {
boutonState++;
if(boutonState>=4)
boutonState=0;
boutonPortail.setImageResource(R.drawable.boutonfermer);
}
};
XML :
<ImageButton
android:id="@+id/boutonPortail"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="40dip"
android:src="@drawable/boutonouvrir"
android:background="#00000000"
style="#00000000"
android:layout_gravity="center"
/>
Вот мой полный код, если вы хотите, чтобы проверить это (обратите внимание, что вы должны вызвать метод codeCorrect()
вручную, так как у вас нет доступа к устройству Bluetooth, использовать):
MainActivity.java
http://pastebin.com/ZXDahPZ6 activity_main.xml
http://pastebin.com/f14cVBKj activity_readytopress.xml
http://pastebin.com/0iZm91eq boutonouvrir.png
http://puu.sh/mLGeU.png ouvertureencours.png
http://puu.sh/mLGfI.png boutonfermer.png
http://puu.sh/mLGe5.png fermetureencours.png
http://puu.sh/mLGgW.png
Спасибо :)
трассировки стека, пожалуйста? –
Кроме того, просто разместите соответствующий код здесь, у вас нет ссылок. –
У меня нет доступа к трассировке стека, так как я тестирую его на своем телефоне:/также для соответствующего кода. Я не знаю, что положить, кроме кода для инициализации, и слушателя, но я обновил его. – Zezombye