2014-09-14 2 views
0

Я только что переместил мою кнопку onCreatView из моего файла activity_main.java в нужный файл - мой файл ConvertFragment.java.ошибка @override, отображающаяся в .xml файле

Теперь, когда я скопировал и наклеил код, я получаю ошибки красного x на всех моих findViewById's ... любых мыслях?

благодарит заранее!

public class ConvertFragment extends Fragment { 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     View rootView = inflater.inflate(R.layout.fragment_convert, container, false); 
     final EditText editDecimal = (EditText) findViewById(R.id.editDecimal); 
     final EditText editBinary = (EditText) findViewById(R.id.editBinary); 
     Button buttonConvert = (Button) findViewById(R.id.buttonConvert); 
     buttonConvert.setOnClickListener(new OnClickListener() { 

      public void onClick(View arg0) { 
       int decimal = Integer.valueOf(editDecimal.getText().toString()); 
       editBinary.setText(Integer.toBinaryString(decimal)); 
      } 
     }); 
     return rootView; 
    } 
} 

ответ

2

Это потому, что фрагмент не имеет способа findViewById().

Вы можете вызвать этот метод на вашей деятельности:

getActivity().findViewById() 

Или просто использовать макет, который вы только что надутый и найти взгляд изнутри о нем:

rootView.findViewById() 

2-й лучше (ИМО), поскольку он не полагается на активность.

+0

И, вы, сэр, я люблю! Спасибо! – KangarooRIOT

+1

Я бы держался подальше от этого первого подхода. В качестве упражнения: представьте, что произойдет, если вы начнете использовать более одного экземпляра одного и того же фрагмента в одном действии ... Или действие, в котором размещаются разные фрагменты, объявляющие одинаковые идентификаторы просмотров. –

+0

@MH. отличные примеры! Не думали о них, когда отвечали. – Simas

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