2016-04-05 9 views
1

Was ich erreicht habe - Abrufen des Benutzernamens von Facebook und Anzeigen in anderer Aktivität (funktioniert gut).
Was arbeite ich an und konnte es nicht bekommen, um arbeits arbeite ich an der Navigationsleiste Aktivität genau wie die folgenden ein, und diese Aktivität (mehr oder weniger) von Android Studio selbst zur Verfügung gestellt enter image description herePlatzieren des abgerufenen Benutzernamens in der Nav-Kopfzeile in der Aktivität Navigationsaktivität

Ich hoffe, Sie können feststellen, dass ein Benutzername dieses zufälligen Typen in diesem Bild oben ist, hat dieser Typ seinen Namen in Text-Ansicht hart-codiert, die ich nicht tun will, stattdessen möchte ich es von Facebook holen nach dem Login.Ich kann erfolgreich den zweiten Teil tun (Holen Sie den Namen von Facebook) Ich einfach nicht, wie Sie zuweisen, lassen Sie mich wissen, ob es eine Möglichkeit gibt, es zu tun.nach unten ist die nav_header.xml

<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"> 

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

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

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

Weise ist die ID, wo ich die abgerufenen Benutzernamen angezeigt werden wollte und dies ist die .java-Datei

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

     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 

     ////////Code is used to fetch the user name//////////// 
     Bundle b = getIntent().getExtras(); 
     ////////Code is used to display the user name after fetchig it from other activity//////////// 
     TextView facebookName = (TextView) findViewById(R.id.manner); 

     facebookName.setText(b.getCharSequence("name")); 
     ///////////////////////// 




     DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
     ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
       this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); 
     drawer.setDrawerListener(toggle); 
     toggle.syncState(); 

     NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); 
     navigationView.setNavigationItemSelectedListener(this); 



    } 

    @Override 
    public void onBackPressed() { 
     DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
     if (drawer.isDrawerOpen(GravityCompat.START)) { 
      drawer.closeDrawer(GravityCompat.START); 
     } else { 
      super.onBackPressed(); 
     } 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.testing2, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     int id = item.getItemId(); 

     //noinspection SimplifiableIfStatement 
     if (id == R.id.action_settings) { 
      return true; 
     } 

     return super.onOptionsItemSelected(item); 
    } 

    @SuppressWarnings("StatementWithEmptyBody") 
    @Override 
    public boolean onNavigationItemSelected(MenuItem item) { 
     // Handle navigation view item clicks here. 
     int id = item.getItemId(); 

     if (id == R.id.nav_camera) { 
      // Handle the camera action 
     } else if (id == R.id.nav_gallery) { 

     } else if (id == R.id.nav_slideshow) { 

     } else if (id == R.id.nav_manage) { 

     } else if (id == R.id.nav_share) { 

     } else if (id == R.id.nav_send) { 

     } 

     DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
     drawer.closeDrawer(GravityCompat.START); 
     return true; 
    } 
} 

Es gibt keine Fehler in diesem Code ist, weil der Code perfekt für verschiedene Aktivitäten mit dem unten funktioniert

Textansicht
<TextView 
     android:id="@+id/manner" 
     android:layout_gravity="left" 
     android:layout_height="wrap_content" 
     android:layout_width="wrap_content" 
     android:text="" 
     android:textAppearance="?android:attr/textAppearanceMedium" /> 

Antwort

4

In oncreate der Aktivität versuchen diese

 NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); 
navigationView.setNavigationItemSelectedListener(this); 
TextView txtProfileName = (TextView) navigationView.getHeaderView(0).findViewById(R.id.manner); 
txtProfileName.setText(userName); 
+0

Es sagt Kann nicht Benutzernamen auflösen, aber wenn ich es in Anführungszeichen wie diesem "userName" gebe, wird der Text (userName) selbst im Navigationsfach angezeigt – Eggsy

+0

Ich setze den Benutzernamen als eine Variable dort. Bitte akzeptieren Sie dies als Antwort – crashOveride

+0

Ich fand die Lösung, aber ich hätte es nicht ohne Ihre Hilfe thankyou so viel Kumpel tun können, danke, was ich getan habe, war ich die letzte Zeile mit 'txtProfileName.setText (b.getCharSequence ("name ")); ' – Eggsy