2016-07-16 6 views
2

他のレイアウトでTextViewのテキストを変更しようとすると少し問題があります。私のMainActivity.javaはコンテンツビューをactivity_main.xmlと設定しています。の<include>s content_main.xmlです。私の主なアプリレイアウトが表示されています(これはAndroidスタジオのナビゲーションドロアのアクティビティです)。 MainActivity.javaでの私のコードの別のレイアウトでテキストを設定

一部を以下に示します。

String user, organisation; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    // Default code to include navigation drawer here 

    if (savedInstanceState == null) { 
     Bundle bundle = getIntent().getExtras(); 

     if (bundle != null) { 
      user = bundle.getString("user"); 
      organisation = bundle.getString("organisation"); 

      LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      View hamburgerMenu = inflater.inflate(R.layout.nav_header_main, null); 

      TextView navUsername = (TextView) hamburgerMenu.findViewById(R.id.nav_username), 
        navOrgGroup = (TextView) hamburgerMenu.findViewById(R.id.orgGroup); 

      navUsername.setText(user); 
      navOrgGroup.setText(organisation); 
     } 
    } 
} 

そして、私のnav_header_main.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="@dimen/nav_header_height" 
    android:background="@drawable/side_nav_bar" 
    android:gravity="bottom" 
    android:orientation="vertical" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    android:theme="@style/ThemeOverlay.AppCompat.Dark"> 

    <ImageView 
     android:id="@+id/imageView" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:paddingTop="@dimen/nav_header_vertical_spacing" 
     android:contentDescription="@string/user" 
     android:src="@android:drawable/sym_def_app_icon" /> 

    <TextView 
     android:id="@+id/nav_username" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:paddingTop="@dimen/nav_header_vertical_spacing" 
     android:text="@string/user" 
     android:textAppearance="@style/TextAppearance.AppCompat.Body1" /> 

    <TextView 
     android:id="@+id/orgGroup" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="@string/email" /> 
</LinearLayout> 

しかしnav_header_main.xmlで、何らかの理由TextViewのため変更されません。 XMLファイルに設定されているデフォルト値のままです。なぜこれはそうですか?前もって感謝します!

+0

'NullPointerException'を取得していないので、' TextViews'を初期化しました。空であっても何かである可能性があるので、 'user'ではなく' .setText( "anything"); 'を試してみてください。 – Vucko

+0

私はsetTextの直後にSnackbarを追加しました。私は 'user'と' organisation'が 'null'ではないことを確信できます –

+0

私のコードでは、ナビで' TextView'を変更するのに、引き出し。 'View v = navigationView.getHeaderView(0); TextView emailTextView =(TextView)v.findViewById(R.id.emailTextView); 'このアプローチを試してみませんか? – Vucko

答えて

1

を表示するために、任意のViewGroupに追加されていません。私のコードで

を私はのTextViewを変更するには多少異なる戦略の使用していますナビゲーションドロワView v = navigationView.getHeaderView(0); TextView emailTextView = (TextView) v.findViewById(R.id.emailTextView);

this questionをご覧ください。ここでテキストをコピーするのは冗長でしょう。

0

あなたhamburgerMenuが膨張が、私のコメントは解決に役立っているので、それを

関連する問題