2015-11-03 1 views
0

Почему я получаю исключение NullPointerException, когда у меня нет доступа к представлению Button в моем фрагменте через представление rootView?NullPointerException, когда я не получаю доступ к представлению Button в своем фрагменте через представление rootView

View rootView = inflater.inflate(R.layout.fragment_main, container, false); 

Button buttonClick =(Button)rootView.findViewById(R.id.button); 

buttonClick.setOnClickListener(new View.OnClickListener() 
{  
    @Override 
    public void onClick(View view) 
    {  
    //Do something when button is clicked 
    } 
}); 
+0

Вы раздувания XML-на rootView, есть еще один способ получить его? Вы имеете в виду просто вызов findViewById() для активности вместо rootView? – Nanoc

+1

ваш код выглядит нормально. проверьте кнопку id R.id.button in fragment_main.xml –

+0

Вернули ли вы rootView? –

ответ

1

findViewById() ищет запрашиваемый вид содержимого вызывающего вида.

Так что, если вы вызываете его из активности, он будет искать представление в contentView, которое вы задали с помощью setContentView(), поэтому его возвращающий null.

Вам нужно вызвать findViewById() в представлении, которое содержит требуемое представление.

Надеюсь, это поможет.

0

Вы раздуваете переменную rootView, поэтому единственный способ получить вашу кнопку - через вашу переменную.

+0

Почему downvote? Как бы то ни было, нечего сказать об этом. – LilaQ

0

Declare Кнопка в Фрагмент

Button buttonClick; 

, а затем написать ниже код в фрагменте.

buttonClick = (Button) rootView.findViewById(R.id.button); 
     buttonClick.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 



      } 
     }); 
0

вы можете инициализировать кнопку OnClick() внутри фрагмента

инициализирует как этот

public class Yourclassname extends Fragment implements View.OnClickListener 
    { 
    Button button1 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
    { 
    View rootview=inflater.inflate(R.layout.postpaid, container, false); 

    button1 = (Button) rootview.findViewById(R.id.button); 
    button1.setOnClickListener(this); 
return rootview; 
} 
public void onClick(View view) 
{  
//Do something when button is clicked 
} 
} 

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

  • Нет связанных вопросов^_^