Как настроить строку заголовка Android во фрагментах на CreateView - PullRequest
1 голос
/ 24 августа 2011

Я пытаюсь изменить вид заголовка с помощью типичного подхода:

@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);
    ...
}

Но этот код по какой-то причине не работает. Что не так?

UPD. хорошо, я объявил

    Window window = getWindow();
    window.requestFeature(Window.FEATURE_CUSTOM_TITLE);
    window.setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.brand_update_layout); 

в Активности и

    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);

во фрагменте, однако у меня есть ошибка:

    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)

в строке title_Text.setText(...);

1 Ответ

1 голос
/ 24 августа 2011

Вы надуваете совершенно новое представление и пытаетесь найти индикатор прогресса / текстовое представление в этом новом раздутом представлении, используя этот код:

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);

Попробуйте изменить это на

ProgressBar progressBar = (ProgressBar)window.findViewById(R.id.title_progress);
TextView title_Text = (TextView)window.findViewById(R.id.title_text);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...