2017-08-02 63 views
1

後只顯示我有一個通用的getSupportActionBar setSubtitle活動娛樂

MyActivity extends AppCompatActivity

我不覆蓋使用自定義XML定義工具欄工具欄,只需使用產生了一個Android提供。

我可以通過你的正常

getSupportActionBar().setTitle("foo");

設置標題,而是通過

getSupportActionBar().setSubtitle("bar");

設置字幕未設置。它仍然是空白的。我這樣做onCreate()

(我覺得我已經這樣做了很多次,沒有失敗)

雖然如果我訪問另一個活動我已經注意到了,然後返回,字幕會再展.. 。不是在方位變化上,不在recreate()上,但僅限於我從活動返回時。

我在5.0和7.0

遇到此其時我很可能會定義自己的Toolbar,向前邁進,因爲這似乎是大多數人對同樣的問題的解決方案。

相關代碼:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_replenishment_list); 
    ButterKnife.bind(this); 
    MyApplication.getInstance().getComponent().inject(this); 

    setupUI(); 
} 

private void setupUI() { 
    setupActionBar(); 
} 

private void setupActionBar() { 
    ActionBar actionBar = getSupportActionBar(); 
    if (actionBar != null) { 
     //TODO: not working unless activity is recreated... 
     // explore custom xml defined toolbar 
     //actionBar.setTitle("different title than what is defined in manifest"); <-- this does work, but not this 
actionBar.setSubtitle(UserUtil.getFormattedFirstNameLastName(userService.getUserFromJWT(), this)); 


    } 
} 
+0

你把你的'getSupportActionBar()。setSubtitle(「bar」);'code? – UmarZaii

+0

@UmarZaii'onCreate()' – ElliotM

+0

你可以在帖子中包含你的代碼嗎?活動代碼。 – UmarZaii

回答

1

我已經把下面的代碼在我onCreate()方法。

ActionBar actionBar = getActionBar(); 
if (actionBar==null) { 
    System.out.println("TEST NULL"); 
} else { 
    System.out.println("TEST NOT NULL"); 
} 

結果是null。當我首先添加工具欄時,它工作正常。

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
setSupportActionBar(toolbar); 
ActionBar actionBar = getActionBar(); 
actionBar.setSubtitle("TESTING"); 

getSupportActionBargetActionBar將返回null如果您沒有設置工具欄了。在使用getSupportActionBargetActionBar之前,您需要將工具欄設置爲您的操作欄。

+0

實際上,'getSupportActionBar'不會返回null(因爲我們使用Android提供的生成的)當它碰到那個代碼塊時。手動添加工具欄不是我正在尋找的解決方案(考慮我現在正在做這個替代方案)。我感謝你的努力 – ElliotM