2015-04-22 2 views
2

Возможно ли создать приложение, которое использует одно действие и несколько связанных с ним файлов компоновки макета? Я знаю, что вы можете использовать setContextView(), чтобы открыть другой макет, но когда я пытаюсь настроить любых слушателей в действии для других макетов, он сработает? есть ли способ вокруг этого, кроме использования фрагментов?Возможно ли иметь одно действие с несколькими макетами xml?

+2

Вы можете показать свой журнал аварий? – Abhishek

+0

Ya можно .. используя фрагмент – Destro

ответ

2

Это зависит от ваших потребностей.

Вы можете создать набор макетов, которые вы хотите использовать в своей деятельности. Наполните их, а затем используйте их в setContentView(). Это решение наверняка будет работать, но вы должны быть супер точными. Зачем? Для каждого изменения макета вы должны быть уверены, что ссылки на ссылки не являются нулевыми, а их ссылки по-прежнему соответствуют отображаемому макету.

Его лучше и легче создавать фрагменты. Допустим, у вас будет 4 - 5 отдельных экранов, которые вы хотите использовать в своей деятельности. Класс активности будет ОГРОМНЫМ и трудно отлаживаться. Использование фрагментов разделит код на 4 отдельных фрагмента, что будет проще для сохранения чистого и приятного кода.

2

Попробуйте надувать макеты в вашей деятельности, например:

public class NavigationView extends LinearLayout { 

public NavigationView(Context context) { 

    super(context); 
    this.init(context); 

} 

public void init(Context context) { 

    LayoutInflater inflater = LayoutInflater.from(context); 
    View v = inflater.inflate(R.layout.nav, this, true); 

    Spinner spinner = (Spinner) v.findViewById(R.id.navSpinner); 
    if(spinner != null) { 

     ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(context, R.array.nav_sections, android.R.layout.simple_spinner_item); 
     adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
     spinner.setAdapter(adapter); 
    } 

} 

} 
+0

Это должен быть комментарий !!! – Piyush

0

Если вы используете несколько расположение XML в одном виде деятельности, приложение не будет врезаться.

Дайте

setContentView(R.layout.XMLLayoutName); 

В осколках также его возможных, но активность является простым способом для достижения этой цели.

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