2013-11-20 3 views
4

Я использую настраиваемый макет, чтобы центрировать название actiobar.Изменение пользовательского названия панели действий

ActionBar actionBar = getActionBar(); 
    actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM); 
    actionBar.setCustomView(R.layout.action_bar); 

где action_bar простая линейная компоновка с TextView

Моя проблема в том, что мне нужно каждый вид деятельности, чтобы иметь разные имена - и мне нужно изменить тему программно. Так что я пытаюсь что-то вроде этого:

private void setActiobarTitle(String title) 
{ 
    LayoutInflater inflator = (LayoutInflater)this.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    View v = inflator.inflate(R.layout.action_bar, null); 
    TextView titleTxtView = (TextView) v.findViewById(R.id.actionbarTitle); 
    titleTxtView.setText(title); 
} 

Когда TextView отладки найдено и инициализации и кажется, что все будет в порядке - но название не меняется. Может кто-нибудь, пожалуйста, скажите мне, что кажется проблемой?

+0

сообщения LogCat – Rick

+0

Где вы вызываете этот метод? – kai

ответ

20

Изменить setActionbarTitle(), как показано ниже

private void setActiobarTitle(String title) 
{ 

    View v = getActionbar().getCustomView(); 
    TextView titleTxtView = (TextView) v.findViewById(R.id.actionbarTitle); 
    titleTxtView.setText(title); 
} 
+0

Отлично - это сработало! – Alin

+0

Я получаю исключение нулевого указателя прямо на этой строке. TextView titleTxtView = (TextView) v.findViewById (R.id.actionbarTitle); Помогите? – dsharew

+0

@ user2412816 у вас есть вид с именем actionbarTitle ?? – SathMK

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