Проблема с отступающим значением из базы данных firebase plz plz
I cant add all the code but I will explain it very clearly plz bear with me **I KNOW I AM ASKING TOO MUCH AND IT IS ANNOYING BUT PLZ HELP ME ILL BE FOREVER IN YOUR DEBT I STARTED LEARNING CODING RECENTLY MAYBE THATS WHY IM NOT GOOD OR MAYBE IM A LITTLE DUMB BUT I HAVE BEEN AT IT FOR A WEEK NOW I HOPE THAT YOU GUYS CAN HELP ME WITH THIS** I picked a chat app which had 2 fragments which could be swiped I wanted to add my own fragment in it so I added a global chat app I created my self I didn't use anything from existing code so not to mess with existing I made a global folder and added my java files and layout files in app to make use of it now here is the problem I cant seem to get the current user name no matter what now plz let me explain first i have almost tried all methods plz believe me i have tried almost all methods on diff stackflow and other sites before i posted message here ill start with how Database looks like in Firebase with a picture These will help you understand it more i added global chat so the folder of global is mine rest is nothing to do with what i added [This is picture of what i wana get from Database by it seems when i in my global fragment im not connected with it at all so i cant get it with getCurrentUser and when i use other methods to get it i get blank instead of the palce where name should be when i run my app][1] [How other Data is saved in Database][2] [This is how my Data is been saved now for the Fragment i added][3] [1]: https://i.stack.imgur.com/PKELr.png [2]: https://i.stack.imgur.com/htlpZ.png [3]: https://i.stack.imgur.com/m3RsQ.png now the code i added public class GlobalFragment extends Fragment { public static final String ANONYMOUS = "anonymous"; public static final int DEFAULT_MSG_LENGTH_LIMIT = 1000; private ListView mMessageListView; private MessageAdapter mMessageAdapter; private ProgressBar mProgressBar; private ImageButton mPhotoPickerButton; private EditText mMessageEditText; private Button mSendButton; private String mUsername; private String myid; private FirebaseDatabase mFirebaseDatabase; private DatabaseReference mMessagesDatabaseReference; private DatabaseReference mRef; private ChildEventListener mChildEventListener; private FirebaseAuth mFirebaseAuth; private FirebaseAuth.AuthStateListener mAuthStateListener; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.fragment_global, container, false); /** TODO: Insert all the code from the NumberActivity’s onCreate() method after the setContentView method call */ mUsername = ANONYMOUS; myid = StaticConfig.UID; mFirebaseDatabase = FirebaseDatabase.getInstance(); mFirebaseAuth = FirebaseAuth.getInstance(); mRef = mFirebaseDatabase.getReference(); mRef.addValueEventListener(new ValueEventListener() { @Override public void onDataChange(@NonNull DataSnapshot dataSnapshot) { for(DataSnapshot ds : dataSnapshot.getChildren()){ FriendlyMessage uinfo = new FriendlyMessage(); uinfo.setName(ds.child(myid).getValue(FriendlyMessage.class).getName()); mUsername = uinfo.getName(); } } @Override public void onCancelled(@NonNull DatabaseError databaseError) { } }); mMessagesDatabaseReference = mFirebaseDatabase.getReference().child("global"); // Initialize references to views mProgressBar = (ProgressBar) rootView.findViewById(R.id.progressBar); mMessageListView = (ListView) rootView.findViewById(R.id.messageListView); mPhotoPickerButton = (ImageButton) rootView.findViewById(R.id.photoPickerButton); mMessageEditText = (EditText) rootView.findViewById(R.id.messageEditText); mSendButton = (Button) rootView.findViewById(R.id.sendButton); // Initialize message ListView and its adapter List<FriendlyMessage> friendlyMessages = new ArrayList<>(); mMessageAdapter = new MessageAdapter(getActivity(), R.layout.item_message_global, friendlyMessages); mMessageListView.setAdapter(mMessageAdapter); // Initialize progress bar mProgressBar.setVisibility(ProgressBar.INVISIBLE); // ImagePickerButton shows an image picker to upload a image for a message mPhotoPickerButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { // TODO: Fire an intent to show an image picker } }); // Enable Send button when there's text to send mMessageEditText.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) { } @Override public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) { if (charSequence.toString().trim().length() > 0) { mSendButton.setEnabled(true); } else { mSendButton.setEnabled(false); } } @Override public void afterTextChanged(Editable editable) { } }); mMessageEditText.setFilters(new InputFilter[]{new InputFilter.LengthFilter(DEFAULT_MSG_LENGTH_LIMIT)}); // Send button sends a message and clears the EditText mSendButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { // TODO: Send messages on click FriendlyMessage friendlyMessage = new FriendlyMessage(mMessageEditText.getText().toString(), mUsername, null); mMessagesDatabaseReference.push().setValue(friendlyMessage); // Clear input box mMessageEditText.setText(""); } }); mChildEventListener = new ChildEventListener() { @Override public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) { FriendlyMessage friendlyMessage = dataSnapshot.getValue(FriendlyMessage.class); mMessageAdapter.add(friendlyMessage); } @Override public void onChildChanged(@NonNull DataSnapshot dataSnapshot, @Nullable String s) { } @Override public void onChildRemoved(@NonNull DataSnapshot dataSnapshot) { } @Override public void onChildMoved(@NonNull DataSnapshot dataSnapshot, @Nullable String s) { } @Override public void onCancelled(@NonNull DatabaseError databaseError) { } }; mMessagesDatabaseReference.addChildEventListener(mChildEventListener); return rootView; } **MessageAdapter** public class MessageAdapter extends ArrayAdapter<FriendlyMessage> { private List<FriendlyMessage> listMessage; public MessageAdapter(Context context, int resource, List<FriendlyMessage> objects) { super(context, resource, objects); } @Override public View getView(int position, View convertView, ViewGroup parent) { if (convertView == null) { convertView = ((Activity) getContext()).getLayoutInflater().inflate(R.layout.item_message_global, parent, false); } ImageView photoImageView = (ImageView) convertView.findViewById(R.id.photoImageView); TextView messageTextView = (TextView) convertView.findViewById(R.id.messageTextView); TextView authorTextView = (TextView) convertView.findViewById(R.id.nameTextView); FriendlyMessage message = getItem(position); boolean isPhoto = message.getPhotoUrl() != null; if (isPhoto) { messageTextView.setVisibility(View.GONE); photoImageView.setVisibility(View.VISIBLE); Glide.with(photoImageView.getContext()) .load(message.getPhotoUrl()) .into(photoImageView); } else { messageTextView.setVisibility(View.VISIBLE); photoImageView.setVisibility(View.GONE); messageTextView.setText(message.getText()); } authorTextView.setText(message.getName()); return convertView; } } public class FriendlyMessage { private String text; private String name; private String photoUrl; public FriendlyMessage() { } public FriendlyMessage(String text, String name, String photoUrl) { this.text = text; this.name = name; this.photoUrl = photoUrl; } public String getText() { return text; } public void setText(String text) { this.text = text; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPhotoUrl() { return photoUrl; } public void setPhotoUrl(String photoUrl) { this.photoUrl = photoUrl; } } <RelativeLayout 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:layout_width="match_parent" android:layout_height="match_parent" android:padding="16dp" android:background="@color/tan_background" tools:context=".MainActivity"> <ListView android:id="@+id/messageListView" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_above="@+id/linearLayout" android:stackFromBottom="true" android:divider="@android:color/transparent" android:transcriptMode="alwaysScroll" tools:listitem="@layout/item_message_global"/> <LinearLayout android:id="@+id/linearLayout" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:orientation="horizontal" android:background="@drawable/chat_send_background_global"> <ImageButton android:id="@+id/photoPickerButton" android:layout_width="36dp" android:layout_height="36dp" android:layout_gravity="bottom" android:background="@android:drawable/ic_menu_gallery" /> <EditText android:id="@+id/messageEditText" android:layout_width="0dp" android:maxLines="6" android:hint="Type a message" android:background="#ffff" android:layout_height="33dp" android:layout_gravity="center_vertical" android:layout_weight="1"/> <!--<Button--> <!--android:id="@+id/sendButton"--> <!--android:layout_width="wrap_content"--> <!--android:layout_height="wrap_content"--> <!--android:layout_gravity="bottom"--> <!--android:enabled="false"--> <!--android:text="@string/send_button_label"/>--> <Button android:id="@+id/sendButton" android:background="@drawable/ic_send_black_24dp_global" android:layout_width="30dp" android:layout_height="40dp" android:layout_gravity="bottom" android:enabled="false" android:layout_weight="0.03" /> </LinearLayout> <ProgressBar android:id="@+id/progressBar" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:layout_width="wrap_content" android:layout_height="wrap_content" style="?android:attr/progressBarStyleLarge" /> </RelativeLayout> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="@dimen/activity_horizontal_margin" android:layout_marginStart="@dimen/activity_horizontal_margin" android:padding="4dp" android:orientation="vertical"> <ImageView android:id="@+id/photoImageView" android:layout_width="match_parent" android:layout_height="wrap_content" android:adjustViewBounds="true" /> <TextView android:id="@+id/nameTextView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="" android:textColor="#9f000000" android:layout_weight="0" android:textAppearance="?android:attr/textAppearanceSmall" tools:text="Name" /> <TextView android:id="@+id/messageTextView" android:layout_width="wrap_content" android:text="Message " android:textSize="15dp" android:layout_marginRight="@dimen/item_right_margin" android:gravity="center_horizontal" android:background="@drawable/chat_item_background_global" android:textColor="#fff" android:padding="7dp" android:textAlignment="textStart" android:clickable="true" android:autoLink="web" android:textIsSelectable="true" android:textEditPasteWindowLayout="@color/authui_colorActivated" android:layout_height="wrap_content" tools:ignore="RtlCompat" /> </LinearLayout> I have a working global chat app which has can send both message and image and i trying to add it little by little but i didn't expect to be stuck here FOR A WEEK i have literally understood where the saying "Hitting your head on the wall came from " Plz i beg you i have at it for a week but cant get the idotic username i have many methods but still cant get it sometimes printing blank name when i run app i used even uid to some get it but i feel like crying if you want to know in which code i added my code to its this sorry i couldn't add the code directly because its to big i just cant get the concept why people create so many java and layouts.... https://github.com/ashwin-phadke/ZappChatt
Что я уже пробовал:
Я пытался получить его с помощью Идентификатор uid и просто через метод getcurrentuser и многие другие методы, которые я нашел повсюду в течение недели
David Crow
Это проблема с загрузкой чужого кода без полного понимания того, что он делает и как все это связано друг с другом.
Поскольку вы "новичок", я предлагаю начать с нескольких более простых проектов, которые не связаны: чат, фрагменты или Firebase. Как только вы начнете разбираться в вещах, медленно добавляйте к ним по одной части за раз, а не пытайтесь делать все сразу (с заимствованным кодом, о котором вы мало знаете).