2013-12-18 4 views
0

Я пытаюсь создать круг внутри фрагмента, и мне нужно изменить его цвет во время выполнения в будущем. , но метод setBackgroundDrawable дает мне nullPointerException.setBackgroundDrawable дать nullpointerexception в android

Я не могу понять, как я веб-разработчик, и я новичок в разработке Android. Пожалуйста, помогите мне.

И код ниже

public class tester extends Fragment { 
    private View circle_holder; 
    @SuppressWarnings("deprecation") 
    @SuppressLint("NewApi") 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) { 
     View rootView = inflater.inflate(R.layout.today, container, false); 
     circle_holder = (View)getActivity().findViewById(R.id.cicle); 
     ShapeDrawable mDrawable = new ShapeDrawable(new OvalShape()); 
     mDrawable.getPaint().setColor(Color.RED); 
     if (Build.VERSION.SDK_INT >= 16){ 
      circle_holder.setBackground(mDrawable); 
     } 
     else{ 
      circle_holder.setBackgroundDrawable(mDrawable); 
     } 
     return rootView; 
    } 
} 

ответ

3

Изменение этой линии.

circle_holder = (View)getActivity().findViewById(R.id.cicle); 

в

circle_holder = (View)rootView .findViewById(R.id.cicle); 
+0

эй Калян, спасибо большое. Это сработало. Можете ли вы дать мне быстрый совет, как вы отлаживали или узнавали. так это поможет мне в будущем? – swati

+0

hi @swati, когда вы когда-либо использовали фрагмент, вам нужно получить представление с использованием вашего завышенного view.findviewById или есть метод, называемый getView в фрагменте, который вернет ваше завышенное представление, но оно будет использоваться после вызова onCreateView(). с использованием выше двух методов вы можете просмотреть фрагменты .. –

+0

@swati getActivity.findViewById() используется для получения представления родительской активности, в которой добавлен ваш фрагмент ... но в большинстве случаев он не нужен. –

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