Привет, ребята, я новичок в разработке полного приложения в студии Android с использованием Firebase Firestore. Я следил за видео на YouTube с документами firestores, и я пытался просто получить все документы из моей коллекции «Anket», которая является коллекцией Survey, и перечислить их во всплывающем окне. Спасибо за ваше время и добрые ответы. .
MainFragmentActivity.java:
public class MainFragmentActivity extends AppCompatActivity {
private static final String TAG = "MainActivity";
private SectionPageAdapter mSectionPageAdapter;
private ViewPager mViewPager;
FirebaseAuth mAuth = FirebaseAuth.getInstance();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_fragment2);
Log.d(TAG,"onCreate:Starting");
mViewPager = findViewById(R.id.container);
setupViewPager(mViewPager);
mViewPager.setOffscreenPageLimit(4);
mSectionPageAdapter = new SectionPageAdapter(getSupportFragmentManager());
TabLayout tabLayout = findViewById(R.id.tabs);
tabLayout.setupWithViewPager(mViewPager);
}
private void setupViewPager(ViewPager viewPager){
SectionPageAdapter adapter = new SectionPageAdapter(getSupportFragmentManager());
adapter.addFragment(new ProfileFragment(), "Profile");
adapter.addFragment(new MessageFragment(), "Messages");
adapter.addFragment(new MatchFragment(), "Matches");
adapter.addFragment(new ShopFragment(), "Shop");
viewPager.setAdapter(adapter);
}
public void logoutUser(View view) {
mAuth.signOut();
Intent intent = new Intent (MainFragmentActivity.this, ChooseLoginRegistration.class);
startActivity(intent);
finish();
return;
}
public void openUpAnket (View view){
Intent intent = new Intent(MainFragmentActivity.this,Pop.class);
startActivity(intent);
}
}
Поп.java
public class Pop extends Activity implements Serializable {
private FirebaseFirestore surveyDb = FirebaseFirestore.getInstance();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.anket_pop_up);
surveyDb.collection("Surveys").get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
List<Anket> mAnketList = new ArrayList<>();
if (task.isSuccessful()){
for(QueryDocumentSnapshot document : task.getResult()){
Log.e("zaa",document.getId() + "=>"+ document.getData());
Anket anket = document.toObject(Anket.class);
mAnketList.add(anket);
}
ListView mAnketListView = findViewById(R.id.anket_list);
AnketItemAdapter mAnketItemAdapter = new AnketItemAdapter(this ,mAnketList);
mAnketListView.setAdapter(mAnketItemAdapter);
}else{
Log.e("ZZAAAA","erör",task.getException());
}
}
});
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
int width = dm.widthPixels;
int height = dm.heightPixels;
getWindow().setLayout((int)(width*.85),(int)(height*.9));
}
AnketItemAdapter.java
public class AnketItemAdapter extends ArrayAdapter<Anket> {
public AnketItemAdapter(OnCompleteListener<QuerySnapshot> context, List<Anket> object){
super((Context) context,0, object);
}
@Override
public View getView(int position, View convertView, ViewGroup parent){
if (convertView == null){
convertView = ((Activity)getContext()).getLayoutInflater().inflate(R.layout.anket_custom_item,parent,false);
}
TextView mAnketSorusu = (TextView) convertView.findViewById(R.id.anket_soru);
Button cvp1 = convertView.findViewById(R.id.cvp1);
Button cvp2 = convertView.findViewById(R.id.cvp2);
Anket anket = getItem(position);
mAnketSorusu.setText(anket.getQuestion());
cvp1.setText(anket.getAnswer1());
cvp2.setText(anket.getAnswer2());
return convertView;
}
}
Логкэт
Process: com.example.anyzonev01, PID: 678
java.lang.ClassCastException: com.example.anyzonev01.Pop$1 cannot be cast to android.content.Context
at com.example.anyzonev01.AnketItemAdapter.<init>(AnketItemAdapter.java:21)
at com.example.anyzonev01.Pop$1.onComplete(Pop.java:50)
at com.google.android.gms.tasks.zzj.run(Unknown Source)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6077)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756)




AnketItemAdapter mAnketItemAdapter = new AnketItemAdapter(this ,mAnketList);
это здесь относится к созданному вами экземпляру OnCompleteListener, а не к Activity (который является контекстом). Вместо этого попробуйте Pop.this, это будет относиться к внешнему экземпляру Activity.
Извини, я виноват. Ваш закрывающий класс называется «Поп», я изменил свой ответ.
Большое спасибо, чувак, ты спас мне ночь! Это не дало мне всех данных, но я могу с этим работать.
Большое спасибо за ваш быстрый ответ, я ценю. Но когда я исправляю код так, как вы мне сказали, он говорит: «android.app.Activity не является охватывающим классом».