2013-02-17 5 views
0

У меня есть файл XML, который содержит кнопку, и его называют кнопку/XMLНе удается получить доступ к элементам внутри включен макет: Android

<Button 
    android:id="@+id/loginButton1" 
    style="?android:attr/buttonStyleSmall" 
    android:layout_width="match_parent" 
    android:layout_height="40dp" 
    android:background="@drawable/button_background" 
    android:text="Button" /> 

Я другой макет под названием login.xml, который включает в себя button.xml в нем дважды.

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    android:paddingLeft="30dp" 
    android:paddingRight="30dp" 
    android:paddingTop="30dp"> 

    <include 
     android:id="@+id/loginUser1" 
     android:layout_width="match_parent" 
     android:layout_height="30dp" 
     layout="@layout/button" /> 

     <include 
      android:id="@+id/loginUser2" 
      android:layout_width="match_parent" 
      android:layout_height="30dp" 
      android:layout_marginTop="20dp" 
      layout="@layout/button" /> 

</LinearLayout> 

Теперь, когда я пытаюсь получить доступ к каждой из кнопок отдельно в моем классе Java, я получаю сообщение об ошибке, указывая на loginUser1. Ошибка говорит NullPointerException. Поскольку я точно знаю, что loginUser1 существует, почему я все еще получаю ошибку?

final LinearLayout layout = (LinearLayout)findViewById(R.id.loginUser1); //null pointer exception HERE! 
    final Button button = (Button)layout.findViewById(R.id.loginButton1); 
    button.setText("button one"); 

ответ

2

Проверьте свой лог-кот. Вы должны получить ClassCastException вместо NullPointerException. Проблема в том, что представление с id R.id.loginUser1 на самом деле является Button, а не LinearLayout. Следующий код должен работать хорошо:

final Button first = (Button) findViewById(R.id.loginUser1); 
final Button second = (Button) findViewById(R.id.loginUser2); 

first.setText("button one"); 
second.setText("button two"); 

Кроме того, обратите внимание, что нет кнопки с идентификатором R.id.loginButton1 больше, потому что его идентификатор был переопределен include тегом

0

Вы должны сделать это

Последней кнопкой первой = (Кнопка) findViewById (R.id.loginButton1); first.setText («ваш текст»);

как loginUser1 - это кнопка, а не LinearLayout.

+0

Извините, но это только изменяет текст первой кнопки ... как вы предлагаете мне изменить текст для второго? – BurninatorDor

Смежные вопросы