Ошибка контекста java.lang.ClassCastException

Привет, ребята, я новичок в разработке полного приложения в студии 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)
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
50
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
AnketItemAdapter mAnketItemAdapter = new AnketItemAdapter(this ,mAnketList);

это здесь относится к созданному вами экземпляру OnCompleteListener, а не к Activity (который является контекстом). Вместо этого попробуйте Pop.this, это будет относиться к внешнему экземпляру Activity.

Большое спасибо за ваш быстрый ответ, я ценю. Но когда я исправляю код так, как вы мне сказали, он говорит: «android.app.Activity не является охватывающим классом».

Kerem H. 28.02.2019 22:38

Извини, я виноват. Ваш закрывающий класс называется «Поп», я изменил свой ответ.

uaraven 28.02.2019 23:25

Большое спасибо, чувак, ты спас мне ночь! Это не дало мне всех данных, но я могу с этим работать.

Kerem H. 28.02.2019 23:31

Другие вопросы по теме