How to customize android title bar in fragments onCreateView
I am trying to change the view of titlebar by typica开发者_JS百科l approach:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup group, Bundle args) {
...
Window window = getActivity().getWindow();
window.requestFeature(Window.FEATURE_CUSTOM_TITLE);
window.setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.brand_update_layout);
ProgressBar progressBar = (ProgressBar) inflater.inflate(R.layout.brand_update_layout, group, false)
.findViewById(R.id.title_progress);
TextView title_Text = (TextView) inflater.inflate(R.layout.brand_update_layout, group, false)
.findViewById(R.id.title_text);
title_Text.setText(Html.fromHtml("..."));
progressBar.setVisibility(View.VISIBLE);
...
}
But this code does not work on some reason. Whats wrong?
UPD. ok, I declared
Window window = getWindow();
window.requestFeature(Window.FEATURE_CUSTOM_TITLE);
window.setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.brand_update_layout);
in Activity and
ProgressBar progressBar = (ProgressBar)getActivity().getWindow().findViewById(R.id.title_progress);
TextView title_Text = (TextView)getActivity().getWindow().findViewById(R.id.title_text);
title_Text.setText(...);
progressBar.setVisibility(View.VISIBLE);
in fragment, however I have an error:
ERROR/AndroidRuntime(12213): java.lang.NullPointerException
at com.quto.ru.CarListFragment.onCreateView(CarListFragment.java:188)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:837)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1041)
at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:616)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1359)
on string title_Text.setText(...);
You are inflating a whole new view and trying to find the progressbar / textview in that newly inflated view by using this code:
ProgressBar progressBar = (ProgressBar) inflater.inflate(R.layout.brand_update_layout, group, false).findViewById(R.id.title_progress);
TextView title_Text = (TextView) inflater.inflate(R.layout.brand_update_layout, group, false).findViewById(R.id.title_text);
Try changing it to this
ProgressBar progressBar = (ProgressBar)window.findViewById(R.id.title_progress);
TextView title_Text = (TextView)window.findViewById(R.id.title_text);
精彩评论