Как получить компоненты макета не на собственном макете Acitivty - PullRequest
1 голос
/ 04 марта 2012

Я пытаюсь манипулировать компонентами, не относящимися к собственному представлению макета. Как бы я сослался на них?

У меня есть идентификатор ресурса, но когда я пытаюсь сослаться на них, используя:

DatePicker date = ((DatePicker) findViewById(resID));

.. Я получаю исключение NullPointerException.

Ответы [ 2 ]

3 голосов
/ 05 марта 2012

Если вы хотите получить представления в другом XML-файле макета, рекомендуется использовать LayoutInflater для раздувания (загрузки) этих файлов.Вы можете сделать что-то вроде этого:

LayoutInflater inflater;
View firstView;
View secondView;
Button aboutFirst;
Button aboutSecond;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);//initialize the layout inflater
    firstView = inflater.inflate(R.layout.firstview, null); // inflate firstview.xml layout file
    secondView = inflater.inflate(R.layout.secondview, null);//inflate secondview.xml layout file
    aboutFirst = (Button) firstView.findViewById(R.id.button1);//get button  in firstview.xml
        aboutSecond = (Button) secondView.findViewById(R.id.button1);//get button in secondview.xml
}
0 голосов
/ 04 марта 2012

Единственное решение, которое я нашел для этого, состояло в том, чтобы изменить текущее представление содержимого на то, которое содержит представление, которое вы пытаетесь найти:

setContentView(R.layout.second_layout);
DatePicker date = ((DatePicker)findViewById(resID));
setContentView(R.layout.main);

и затем вернуться к исходному макету.Я все еще ищу лучшее решение, но это то, что у меня есть сейчас.

...