मैं फ़ायरबेस डेटाबेस से प्राप्त मान के आधार पर टेक्स्ट व्यू का टेक्स्ट सेट करने का प्रयास कर रहा हूं। मैं विधि के भीतर स्ट्रिंग को प्रिंट करने में सक्षम हूं और यदि स्ट्रिंग शून्य है तो मैंने टेक्स्ट सेट नहीं करने के लिए एक चेक जोड़ा है, फिर भी चेक पास हो गया है और जब मैं सेटटेक्स्ट को कॉल करता हूं तो मुझे एक शून्य ऑब्जेक्ट संदर्भ मिलता है।

यहाँ है MapsActivity.java

private TextView headerText;  
private FirebaseAuth mAuth = FirebaseAuth.getInstance();
private FirebaseUser currentUser = mAuth.getCurrentUser();
private FirebaseDatabase database = FirebaseDatabase.getInstance();

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


    headerText = (TextView) findViewById(R.id.header_text);
    DatabaseReference ref = database.getReference("Users/"+currentUser.getUid()+"/user_name");
    ref.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            String userName = (String) dataSnapshot.getValue();

            //debugging
            Toast.makeText(MapsActivity.this, userName, Toast.LENGTH_SHORT).show();

            //passes check and attempts to set
            if(userName!=null)
                headerText.setText(userName);
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });

यहाँ है nav_header.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="90dp"
      android:background="?attr/colorPrimary"
      android:padding="16dp"
      android:theme="@style/AppTheme"
      android:orientation="vertical"
      android:gravity="bottom">

<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/header_text">

</TextView>

मैंने सुनिश्चित किया है कि संदर्भ मान्य है और स्ट्रिंग को उपयोगकर्ता नाम को सौंपा जा रहा है। मैं प्रोजेक्ट में कई अन्य स्थानों पर मान सेट करने के लिए onDataChange का उपयोग कर रहा हूं और पहले इस मुद्दे पर नहीं आया हूं

किसी भी मदद के लिए धन्यवाद

संपादित करें: पूर्णता के लिए, यहां activity_maps.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"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true">

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="#eaeaea"
        app:popupTheme="@style/AppTheme.PopupOverlay"
        app:title="Map" />

    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <fragment
            android:id="@+id/map"
            android:name="com.google.android.gms.maps.SupportMapFragment"
            android:layout_width="match_parent"
            android:layout_height="match_parent">

        </fragment>

    </FrameLayout>

</LinearLayout>

<android.support.design.widget.NavigationView
    android:id="@+id/nav_view"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="start"
    android:fitsSystemWindows="true"
    app:menu="@menu/nav_menu"
    app:headerLayout="@layout/nav_header"/>

  </android.support.v4.widget.DrawerLayout>
0
mackt 11 अप्रैल 2018, 13:40

1 उत्तर

सबसे बढ़िया उत्तर

इसका उपयोग नेविगेशन व्यू नेविगेशन व्यू = (नेविगेशन व्यू) findViewById(R.id.nav_view); शीर्षलेख देखें = नेविगेशनव्यू.गेट हैडर व्यू (0) टेक्स्ट व्यू हेडरटेक्स्ट = (टेक्स्ट व्यू) हैडर.फाइंड व्यूबीआईडी ​​(आर.आईडी.हेडर_टेक्स्ट);

फिर इस तरह टेक्स्ट व्यू में सेट करें

headerText.setText(userName);
0
theanilpaudel 11 अप्रैल 2018, 14:00