2016-08-17 24 views
0

我到處尋找,只有那麼多人問過這個問題,到目前爲止沒有任何工作。我目前正在開發基於碎片的應用,當有人輸入他們的ID時,它會下載他們的名字和圖片。我希望能夠在nav header字段中更改他們的名字。目前,這是我使用如何以編程方式更改導航標題的文本和圖像android

View header = LayoutInflater.from(getActivity()).inflate(R.layout.nav_header_main, null); 
     navigationView.addHeaderView(header); 
     test = (TextView) header.findViewById(R.id.username); 
     test.setText("HELLO"); 

,我從這裏得到https://code.google.com/p/android/issues/detail?id=190786

這裏我也In android how to set navigation drawer header image and name programmatically in class file?

嘗試過這種方法這兩個結束了這個錯誤

FATAL EXCEPTION: main 

Process: com.horizonservers.horizon, PID: 4042 
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.horizonservers.horizon/com.horizonservers.horizon.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.design.widget.NavigationView.addHeaderView(android.view.View)' on a null object reference                    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416)               at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 
at android.app.ActivityThread.-wrap11(ActivityThread.java) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 
at android.os.Handler.dispatchMessage(Handler.java:102) 
at android.os.Looper.loop(Looper.java:148) 
at android.app.ActivityThread.main(ActivityThread.java:5417) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void' 
android.support.design.widget.NavigationView.addHeaderView(android.view.View)' on a null object reference 
at com.horizonservers.horizon.MainFragment.onCreateView(MainFragment.java:153) 
at android.support.v4.app.Fragment.performCreateView(Fragment.java:1974) 
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1067) 
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1252) 
at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:742) 
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1617) 
at android.support.v4.app.FragmentController.execPendingActions(FragmentController.java:339) 
at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:601) 
at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1237) 
at android.app.Activity.performStart(Activity.java:6253) 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2379) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)  
at android.app.ActivityThread.-wrap11(ActivityThread.java)  
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)  
at android.os.Handler.dispatchMessage(Handler.java:102)  
at android.os.Looper.loop(Looper.java:148)  
at android.app.ActivityThread.main(ActivityThread.java:5417)  
at java.lang.reflect.Method.invoke(Native Method)  
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)  
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)  
代碼

有誰知道如何更改導航標題側欄的文本和圖像? https://gyazo.com/23534130df4aff888708415b368aa1fa

+0

你是否找到你的答案....我也在尋找答案 – Manish

+0

據我目前所見,沒有辦法做到這一點。我聯繫了另一個側邊欄應用程序的開發者,但他說他是從頭開始構建的。 – Destry

+0

任何其他方式來做到這一點.. – Manish

回答

0

根據你的錯誤,它看起來像navigationView爲null。檢查以確保navigationView在正確初始化之前充氣標題。根據您使用片段的方式/位置,片段生命週期可能會在頭部膨脹後初始化navigationView,這將引發NullPointerException。

如果不是上述情況,導航頭文件通脹對最近google設計庫的設計更改所使用的android環境變得非常敏感。以下是我全包的解決方案,也許它適用於您。

NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); 
View header = navigationView.inflateHeaderView(R.layout.nav_header_main); 
test = (TextView) header.findViewById(R.id.username); 
test.setText("HELLO"); 
+0

對不起,這沒有幫助。我早些時候發現了這個答案,並決定嘗試它,但我仍然得到相同的錯誤。 – Destry

相關問題