web-gelistirme-sc.com

Parça ekleme veya değiştirme çalışmıyor

Bu referansın kodunu kullanıyorum.

Programıma bu kodu girdiğimde aşağıdaki resimde görüldüğü gibi hata alıyorum.enter image description here

? The method replace(int, Fragment) in the type FragmentTransaction is not applicable for the arguments (int, ExampleFragments) hatasının herhangi bir nedeni

Ana faaliyet alanımın kodu:

public void red(View view) {
        Android.app.FragmentManager fragmentManager = getFragmentManager();
                Android.app.FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
        ExampleFragments fragment = new ExampleFragments();
        fragmentTransaction.replace(R.id.frag, fragment);
        fragmentTransaction.commit();
    }

ExampleFragments.Java

package com.example.learn.fragments;

import Android.os.Bundle;
import Android.support.v4.app.Fragment;
import Android.view.LayoutInflater;
import Android.view.View;
import Android.view.ViewGroup;

public class ExampleFragments extends Fragment {
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.blue_pill_frag, container, false);
    }
}

İşte:

package com.example.learn.fragments;

import Android.app.Activity;
import Android.os.Bundle;
import Android.support.v4.app.Fragment;
import Android.support.v4.app.FragmentManager;
import Android.support.v4.app.FragmentTransaction;
import Android.view.LayoutInflater;
import Android.view.Menu;
import Android.view.View;
import Android.view.ViewGroup;
54
EGHDK

Buradaki sorun, Android.support.v4.app.Fragment ve Android.app.Fragment öğelerini karıştırmanızdır. Destek kitaplığını kullanmak için tüm kullanımları dönüştürmeniz gerekir; bu ayrıca getSupportFragmentManager() işlevini çağırmak anlamına gelir.

Bunun gibi bir şey, örneğin:

    Android.support.v4.app.FragmentManager fragmentManager = getSupportFragmentManager();
    Android.support.v4.app.FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
    ExampleFragments fragment = new ExampleFragments();
    fragmentTransaction.replace(R.id.frag, fragment);
    fragmentTransaction.commit();

Destek kitaplığı Fragment ve normal Fragment öğelerinin değiştirilemez olduğunu not etmek önemlidir. Aynı amaca ulaşırlar, ancak kodda birbirleriyle değiştirilemezler.

162
Eric

Her ne kadar bu soru cevaplanmış olsa da, çakışan parçaların çözümünün, parça kimliğini (aslında xml'inizde bildirildiği gibi FrameLayout kimliğinin baş ağrısına yol açacağını) almak olduğunu not etmek gerekir:

FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
Fragment fragment = new ExampleFragments();
fragmentTransaction.replace(R.id.frag, fragment);
fragmentTransaction.commit();

Size kaç saat boyunca, görevden sonra bir çözüm olmadan görevden ayrıldığımı söyleyemem. Yukarıdaki yorumlarda bağlantı verilen diğer gönderinizi okudum ve birisinin ilk önce bulması durumunda da cevaplayacağım.

ClassCastException__ elde edenler için bunu da deneyin. Tüm doğru kitaplıkları ekleyebilir, FragmentActivity yerine Fragment komutunu kullanabilir ve ListFragment'teki hataları durdurmak için kodunuzdaki getActivity (). Google dokümanlar size her şeyi göstermez ve Eclipse kodunun tamamlanması sizi her zaman kurtarmaz ... bazen hatayı kendiniz düzeltmeniz gerekir !!

6
whyoz

Bu benim için çalıştı 

Android.app.FragmentManager fragmentManager = getActivity().getFragmentManager();

0
Mudasar

Dene

FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
  fragmentTransaction.replace(R.id.frag, new ExampleFragments()).commit();
0

Ne denedim ne olursa olsun (burada yazılı olanlar dahil), bu cevabı görene kadar bu sorunu çözemedim

https://stackoverflow.com/a/5907704/728312

0
Alpaslan