1

Я пытаюсь получить текстовое представление для ссылки на сайт, но он не найдет id из xml в android. Любая помощь будет большой. Вот кодНе найдете R.Id. в фрагменте

Это обыкновение найти R.id.textviewlink

public class Fragment_2 extends Fragment{ 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){ 

     return inflater.inflate(R.layout.fragment_2, null); 

     TextView t2 = (TextView) getView().findViewById(R.id.textviewlink); 
     t2.setMovementMethod(LinkMovementMethod.getInstance()); 
    } 
} 

XML

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" 
android:paddingTop="10dip" 
android:paddingLeft="10dip" 
android:paddingRight="10dip" 
android:background="@drawable/backgroundw"> 

<ScrollView 
android:layout_width="fill_parent" 
android:layout_height="fill_parent"> 
<LinearLayout 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:orientation="vertical"> 

      <TextView 
    android:id="@+id/textviewlink" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:gravity="center" 
    android:text="Free PDF Download" 
    android:linksClickable="true"/> 

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

ответ

3

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

Во-первых, надуйте() метод всегда требует три аргумента:

inflater.inflate(R.layout.file_name, container, false); 

Поместите следующий в onStart:

TextView t2 = (TextView) getView().findViewById(R.id.textviewlink); 
t2.setMovementMethod(LinkMovementMethod.getInstance()); 

Или просто используйте:

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){ 
    View v = inflater.inflate(R.layout.fragment_2, container, false); //don't forget the third argument here 
    TextView t2 = (TextView) v.findViewById(R.id.textviewlink); 
    t2.setMovementMethod(LinkMovementMethod.getInstance()); 

    return v; 
} 
+0

до сих пор не появляются с обоими методами, но что вы подразумеваете под «не забудьте третий аргумент здесь» – user2407147

+0

общественный класс Fragment_2 расширяет фрагмент { \t \t \t общественное мнение onCreateView (LayoutInflater инфлятор, ViewGroup контейнер, Bundle savedInstanceState) { \t возвращение inflater.inflate (R.layout.fragment_2, NULL); \t \t} \t общественного недействительными OnStart() { \t TextView t2 = (TextView) GetView() findViewById (R.id.textviewlink). \t t2.setMovementMethod (LinkMovementMethod.getInstance()); } } – user2407147

+0

"eturn inflater.inflate (R.layout.fragment_2, null);" Метод inflate() требует трех аргументов: вашего макета xml, ViewGroup и логического attachToRoot. Я уточню свой ответ. – TronicZomB