2015-02-11 6 views
0

Моя проблема заключается в том, что у меня есть несколько RelativeLayouts в LinearLayout внутри ScrollView, который находится в основном RelativeLayout. Когда я пытаюсь получить идентификатор в классе фрагментов, я продолжаю давать мне ошибки.Извлечение идентификаторов из вложенных макетов

Я огляделся в поисках ответа на это в течение примерно 2 дней, и теперь пришел только через идею использования

<include name="some_name" layout="@layout/some_layout"/> 

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

Вот мой XML-файл:

<RelativeLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
    <LinearLayout 
     android:id="@+id/day_labels_linear_layout" 
     android:layout_width="match_parent" 
     android:layout_height="60dp" 
     android:orientation="horizontal"> 
     <!-- not important but this holds the numbers up top --> 
    </LinearLayout> 
    <ScrollView 
     android:id="@+id/calendar_scroll_view" 
     android:layout_width="match_parent" 
     android:layout_height="fill_parent" 
     android:layout_alignParentBottom="true" 
     android:layout_below="@+id/day_labels_linear_layout" 
     android:fadingEdge="none" 
     android:overScrollMode="never" 
     android:scrollbars = "none"> 

     <!-- used to space each day with the day_labels_linear_layout weights --> 
     <LinearLayout 
      android:id="@+id/calendar_spacer" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:orientation="horizontal"> 

      <!--This has all of the hours, I just didn't include them 
       because it would take up so much room--> 
      <RelativeLayout 
       android:id="@+id/hours_relative_layout" 
       android:layout_width="0dp" 
       android:layout_height="match_parent" 
       android:layout_weight="2.5" 
       android:background="@color/scheduler_background" > 

       <TextView 
        android:id="@+id/time_12_am" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_centerHorizontal="true" 
        android:paddingBottom="25dp" 
        android:paddingTop="25dp" 
        android:text="@string/text_time_12_am" /> 

       <TextView 
        android:id="@+id/time_1_am" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_below="@+id/time_12_am" 
        android:layout_centerHorizontal="true" 
        android:paddingBottom="25dp" 
        android:paddingTop="25dp" 
        android:text="@string/text_time_1_am" /> 

       <TextView 
        android:id="@+id/time_2_am" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_below="@+id/time_1_am" 
        android:layout_centerHorizontal="true" 
        android:paddingBottom="25dp" 
        android:paddingTop="25dp" 
        android:text="@string/text_time_2_am" /> 

      </RelativeLayout> 

      <RelativeLayout 
       android:id="@+id/sunday_relative_layout" 
       android:layout_width="0dp" 
       android:layout_height="match_parent" 
       android:layout_weight="2" > 

       <View 
        android:id="@+id/divider_sunday_left" 
        android:layout_width="1dp" 
        android:layout_height="match_parent" 
        android:layout_alignParentLeft="true" 
        android:background="@color/divider_scheduler" /> 

       <Button 
        android:id="@+id/sunday_day" 
        android:layout_width="match_parent" 
        android:layout_height="match_parent" 
        android:layout_centerInParent="true" 
        android:background="@color/transparent" /> 

       <View 
        android:id="@+id/divider_sunday_right" 
        android:layout_width="1dp" 
        android:layout_height="match_parent" 
        android:layout_alignParentRight="true" 
        android:background="@color/divider_scheduler" /> 
      </RelativeLayout> 

      <!-- there is a Relative layout for each day--> 

     </LinearLayout>   
    </ScrollView> 
</RelativeLayout> 

Так что, когда я пытаюсь получить доступ к идентификаторам это то, что я получаю:

RelativeLayout sundayRL; 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState){ 
    View view = inflater.inflate(R.layout.fragment_scheduler, null); 

    sundayRL = (RelativeLayout) view.findViewById(R.id.sunday_relative_layout); 


} 

Это дает мне ошибку: sunday_relative_layout не может быть разрешен или а не поле, я добавил кнопку, чтобы узнать, могу ли я получить идентификатор для этого и тот же результат. Тем не менее, мне удалось найти идентификатор для каждого из чисел дня и дней, которые находятся в верхней строке LinearLayout.

У кого-нибудь есть лучшее решение? Я пытаюсь зарегистрироваться, когда пользователь нажимает на представление, чтобы я мог отправить их на страницу планирования.

EDIT: Так изменение нулевого контейнера позволило мне найти мои Идентификаторы

View view = inflater.inflate(R.layout.fragment_scheduler, container); 

Но это вызвало еще одну проблему с фрагментом карты на одном из других фрагментов говорит, что я не имел правильный ключ API который он делает.

+0

Просто проверка, Является ли код макета вы вывешено 'fragment_scheduler'? –

+0

Да, это мой xml-файл –

+0

Почему вы не используете GridView для отображения предметов того же типа? –

ответ

0

Если у вас есть вложенная Раскладка например:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout > 
    <RelativeLayout 
     android:id="@+id/rl2> 
     <Button 
      android:id="@+id/getStarted" 
      /> 
    </RelativeLayout> 

</RelativeLayout> 

И вы хотите, чтобы нажать на кнопку вложенных один. Добавить идентификатор на вложенном макете.

и использовать этот код в OnCreate()

View view = (View) findViewById(R.id.rl2); 
Button button = (Button) view.findViewById(R.id.getStarted); 
Смежные вопросы