2017-10-21 214 views
-1

Je crée DrawerLayout et il a plus de fichiers XML pour chaque partie, donc je n'ai que 1 classe et plusieurs fichiers XML. Maintenant, je veux définir texte TextView d'un fichier XML dans mon activité principale et j'ai essayé d'utiliser des inflatations de mise en page, mais ça ne fonctionnait pas, il me donnait des erreurs dans certains cas et dans d'autres, rien ne se produisait.
Voici mon code activity_menu.xml (que l'on est le principal fichier xml que j'utilise dans MenuActivity.class)Modification de texte TextView à partir d'un autre fichier XML

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/drawer_layout" 
    android:layout_width="match_parent" 
    android:background="@color/colorBackground" 
    android:layout_height="match_parent" 
    android:fitsSystemWindows="true" 
    tools:openDrawer="start"> 

    <include 
     layout="@layout/app_bar_navigation" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 

    <android.support.design.widget.NavigationView 
     android:id="@+id/nav_view" 
     app:itemTextColor="@color/colorPrimary" 
     android:background="@color/colorBackground" 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:layout_gravity="start" 
     android:fitsSystemWindows="true" 
     app:headerLayout="@layout/nav_header_navigation" 
     app:menu="@menu/activity_navigation_drawer" /> 

</android.support.v4.widget.DrawerLayout> 

est ici nav_header_navigation.xml (il contient 2 TextViews dont le texte je veux changer de mon MenuActivity classe)

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:id="@+id/linearLayout1" 
    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" 
     app:srcCompat="@android:drawable/sym_def_app_icon" /> 

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

    <TextView 
     android:id="@+id/modelMarka" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="[email protected]" /> 

</LinearLayout> 
+1

S'il vous plaît être plus précis. Joindre du code java –

+0

Comme vous pouvez le voir, j'ai attribué un identifiant aux deux textviews et quand j'essaie de l'appeler comme imeNaloga = (EditText) findViewById (R.id.imeNaloga); , puis imeNaloga.setText ("Quelque chose"); mais je reçois une exception de pointeur nul – Praziluk

+0

J'ai également essayé: LayoutInflater inflater = (LayoutInflater) getSystemService (Context.LAYOUT_INFLATER_SERVICE); Vue vi = inflater.inflate (R.layout.nav_header_navigation, null); //log.xml est votre fichier. TextView tv = (TextView) vi.findViewById (R.id.imeNaloga); tv.setText ("Nesto"); pas d'erreur, mais rien ne se passe dans l'application – Praziluk

Répondre

0

Je solution finalement trouvé et espère que cela aidera quelqu'un à l'avenir:

NavigationView nav_view= (NavigationView)findViewById(R.id.nav_view);//this is navigation view from my main xml where i call another xml file 
View header = nav_view.getHeaderView(0);//set View header to nav_view first element (i guess) 
TextView imeNaloga = (TextView)header.findViewById(R.id.imeNaloga);//now assign textview imeNaloga to header.id since we made View header. 
imeNaloga.setText(Ime);// And now just set text to that textview 
+0

m'a aidé. Notez que ceci est pour la situation où vous créez un nouveau fichier androïde modèle avec la configuration "Navigation Drawer", et que vous souhaitez modifier l'en-tête dans le tiroir. – Victor