#android #google-cloud-firestore
#Android #google-облако-firestore
Вопрос:
Я много пробовал, но мои данные не отображаются. когда я помещаю string вместо userId и NFID (userId и Nfid имеют одинаковое значение ….. но он не может читать.
public class ClubInfoActivity extends AppCompatActivity {
public static final String EXTRA_NFID= "com.hm.roktojoddha.EXTRA_NFID";
public static final String EXTRA_MOBILE= "com.hm.roktojoddha.EXTRA_MOBILE";
public static final String EXTRA_ID= "com.hm.roktojoddha.EXTRA_ID";
public static final String EXTRA_CLUB= "com.hm.roktojoddha.EXTRA_CLUB";
public static final String EXTRA_CLUB_FORM= "com.hm.roktojoddha.EXTRA_CLUB_FORM";
FirebaseFirestore fstore;
FirebaseAuth fAuth;
String userID,nfid;
TextView club,title,descrip,date,time,place;
Button form,page;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_club_info);
fAuth = FirebaseAuth.getInstance();
Intent intent = getIntent();
nfid=intent.getStringExtra(FeedFragment.EXTRA_NFID);
userID=intent.getStringExtra(FeedFragment.EXTRA_ID);
Toast.makeText(ClubInfoActivity.this, "" userID " " nfid, Toast.LENGTH_SHORT).show();
fstore = FirebaseFirestore.getInstance();
club = findViewById(R.id.text7club);
title = findViewById(R.id.text11club);
descrip = findViewById(R.id.text17club);
date = findViewById(R.id.text98club);
time = findViewById(R.id.text95club);
place =findViewById(R.id.textView100club);
form = findViewById(R.id.button11);
page = findViewById(R.id.button12);
final String UI = userID;
final String NI =nfid;
Toast.makeText(ClubInfoActivity.this, "" UI " " NI, Toast.LENGTH_SHORT).show();
DocumentReference documentReference = fstore.collection("Club_Detail").document(nfid).collection("History").document(nfid);
documentReference.addSnapshotListener(this, new EventListener<DocumentSnapshot>() {
@Override
public void onEvent(@Nullable DocumentSnapshot documentSnapshot, @Nullable FirebaseFirestoreException e) {
club.setText(documentSnapshot.getString("Club"));
title.setText(documentSnapshot.getString("Title"));
descrip.setText(documentSnapshot.getString("Description"));
date.setText(documentSnapshot.getString("Date"));
time.setText(documentSnapshot.getString("Time"));
place.setText(documentSnapshot.getString("Places"));
String url_check=documentSnapshot.getString("URL");
if (isValid(url_check)){
Toast.makeText(ClubInfoActivity.this, "Yes, URL is Valid", Toast.LENGTH_LONG).show();
form.setVisibility(View.VISIBLE);
}
else{
Toast.makeText(ClubInfoActivity.this, "NO, URL is not Valid/All", Toast.LENGTH_LONG).show();
form.setVisibility(View.GONE);
}
}
});
Я перехожу от новостей моей ленты к другому действию
Но когда я компилирую этот код
DocumentReference documentReference = fstore.collection("Club_Detail").document("7").collection("History").document("202142200Vv1roiaUSQhttIRiyP60LxZd4Hk2");
documentReference.addSnapshotListener(this, new EventListener<DocumentSnapshot>() {
@Override
public void onEvent(@Nullable DocumentSnapshot documentSnapshot, @Nullable FirebaseFirestoreException e) {
club.setText(documentSnapshot.getString("Club"));
title.setText(documentSnapshot.getString("Title"));
descrip.setText(documentSnapshot.getString("Description"));
date.setText(documentSnapshot.getString("Date"));
time.setText(documentSnapshot.getString("Time"));
place.setText(documentSnapshot.getString("Places"));
String url_check=documentSnapshot.getString("URL");
if (isValid(url_check)){
Toast.makeText(ClubInfoActivity.this, "Yes, URL is Valid", Toast.LENGTH_LONG).show();
form.setVisibility(View.VISIBLE);
}
else{
Toast.makeText(ClubInfoActivity.this, "NO, URL is not Valid/All", Toast.LENGTH_LONG).show();
form.setVisibility(View.GONE);
}
}
Но я не хочу этого.
Комментарии:
1. извините …. я не это имел в виду
Ответ №1:
Похоже, проблема в том, что вы используете одну и ту же String
переменную для имен документов. В вашем первом коде (о котором вы говорите, что он не работает) вы используете nfid
String
переменную в качестве имени документа для обоих документов.
DocumentReference documentReference = fstore.collection("Club_Detail").document(nfid).collection("History").document(nfid);
Но в другом коде (который вы добавляете имена документов вручную) вы используете разные значения для каждого документа.
DocumentReference documentReference = fstore.collection("Club_Detail").document("7").collection("History").document("202142200Vv1roiaUSQhttIRiyP60LxZd4Hk2");
Редактировать:
Всплывающее сообщение, показывающее неправильный порядок, я записываю его в соответствии с моей базой данных firestore, я создаю Club_Detail, затем userId, который равен 7 для одного пользователя, затем историю, затем nfid как serial и эту строку nfid
DocumentReference documentReference = fstore.collection("Club_Detail").document(userID).collection("History").document(nfid);
Комментарии:
1. всплывающее сообщение, показывающее неправильный порядок, я записываю его в соответствии с моей базой данных firestore, я создаю Club_Detail, затем userId, который равен 7 для одного пользователя, затем историю, затем nfid как serial и эту строку nfid
2. Я хотел сказать, что вы используете неправильные названия документов. Вы показали две ссылки на DocumentReferences, и имена документов различаются даже для одного и того же документа. Вот что я хотел сказать. В соответствии с вашим комментарием отредактировал мой ответ и изменил названия документов.
3. первый, который вы видите, показан из другого действия, и последний, который вы видите, после открытия этого действия …… два разных
4. Несмотря на то, что действия разные, вы используете одну и ту же строковую переменную (nfid) для разных документов. Вы говорите, что коды принадлежат двум разным действиям, но база данных одинакова, поэтому в соответствии с вашими кодами коллекции и документы одинаковы или имеют схожую структуру, но для имен документов в первом действии вы передаете одну и ту же строковую переменную, но во втором действии имена документов совершенно разные. Либо ваше первое Действие имеет неправильные имена документов, либо ваше второе Действие имеет неправильные имена документов.
5. если(категория.равно(«Клуб»)) { Намерение намерение = новое намерение(getActivity(), ClubInfoActivity.class ); намерение.putExtra(EXTRA_NFID, n_fid); намерение.putExtra(EXTRA_ID, id); startActivity(намерение); Toast.makeText(getActivity(), «» id » » n_fid, Toast. LENGTH_SHORT).show(); }