0

Привет, мне удалось связать файлы XML с ViewPagerIndicator, расширив их как фрагменты, но я не могу использовать основной код findViewById для ссылки на мою кнопку на код. Это мой код, как это кто-то может помочь«findViewById» не работает в фрагменте ViewPagerIndicator

package com.example.sliding; 

import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.Button; 

public class twoey extends Fragment { 

    Button lol; 

    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){ 
     View v = inflater.inflate(R.layout.two, null); 
     return v; 

     lol = (Button) findViewById (R.id.button1); 

    } 
} 

Но что когда я пытаюсь сделать я не могу получить маленькую красную извивающуюся линию findViewById слова кто-то может помочь?

ответ

3

Вашего код имеет 2 ошибки:

  1. return v; должен быть последней строкой методы, любая строка после этого не может быть запущена! недоступен поэтому есть ошибка компилятора!

  2. линия lol = (Button) findViewById (R.id.button1); должна быть lol = (Button) v.findViewById (R.id.button1); или вы собираетесь иметь NullPointerException, потому что button1 является частью View v, а не деятельность.

Правильный код:

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View v = inflater.inflate(R.layout.two, null); 

    lol = (Button) v.findViewById (R.id.button1); 
    return v; 
} 
+0

Я попытался это, но тогда я получаю большую красную волнистую линию на всей линии, которая не решает проблему – Mizzeeboy

+1

Включите эту строку выше доходности –

+0

строки не упорядочены правильно, смотрите мой выбор! – madlymad

0

Java компилятор просто не может получить доступ код, написанный после return заявления. return означает, что вы закончили с помощью метода, и вы возвращаете значение из него, поэтому нет смысла выполнять что-то после этого. Поэтому вам нужно просто переместить lol = (Button) findViewById (R.id.button1) (который по сути должен быть вызван как lol = (Button) v.findViewById (R.id.button1), так как v - это ваш корневой вид) перед вызовом return v, и код будет скомпилирован должным образом. Надеюсь это поможет.

0

Переопределить onViewCreated(). Как это:

@Override 
public void onViewCreated(View view, Bundle savedInstanceState) { 
super.onViewCreated(view, savedInstanceState); 
    lol = (Button) getView().findViewById (R.id.button1); 

    .... // ANY OTHER CASTS YOU NEED TO USE IN THE FRAGMENT 
} 
Смежные вопросы