2012-08-24 21 views
21

Bir FrameLayout içeren editor.xml adlı bir xml dosyası oluşturdum. Ana etkinliğimde özel fragmanımı FrameLayout'uma eklemeye çalışıyorum.Parça çerçevemdeki bir parçacığı eklemeye çalışıyor FrameLayout

benim parçasını eklemeye çalışırken aldığım hatadır: tip FragmentTransaction içinde

yöntem eklenti (int, Fragman) bağımsız değişkenler için geçerli değildir (int, editorFrag) Ancak

benim editorFrag Fragment'i genişletiyor, bu yüzden bunun neden olduğu konusunda kafam karışıyor. Aşağıda, bahsettiğim dosyalar için kodum var. Herhangi bir yardım takdir edilir.

Editor.xml

<?xml version="1.0" encoding="utf-8"?> 
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/fragment_container" 
android:layout_width="match_parent" 
android:layout_height="match_parent" /> 

editorFrag.java

public class editorFrag extends Fragment 
{ 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) 
    { 

     // Inflate the layout for this fragment 
     return inflater.inflate(R.layout.newlevel, container, false); 
    } 
} 

MainActivity.java

public class editorActivity extends FragmentActivity 
{ 
    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 

     setContentView(R.layout.editor); 

     // Check that the activity is using the layout version with the fragment_container FrameLayout 
     if(findViewById(R.id.fragment_container) != null) 
     { 
      // if we are being restored from a previous state, then we dont need to do anything and should 
      // return or else we could end up with overlapping fragments. 
      if(savedInstanceState != null) 
       return; 

      // Create an instance of editorFrag 
      editorFrag firstFrag = new editorFrag(); 

      // add fragment to the fragment container layout 
      getSupportFragmentManager().beginTransaction().add(R.id.fragment_container, firstFrag); 
     } 
    } 
} 

Yanıtlanmış:

Luksprog söyleyerek aşağıda benim için bu sorunu cevap c ithalatlarımı kontrol et. Eclipse, ihtiyaç duyduğum destek sürümü yerine Parçanın SDK sürümünü içe aktarmayı seçti. Yardım için teşekkürler.

+0

gibi) (işlemek ekleyin. "Fragment" uyumluluk paketi yerine "Fragment" ın "SDK" sürümünü almadıysanız bakın. – Luksprog

+0

Tam olarak haklısınız, tutulma benim için izin verdim ve gerçekten de benim faaliyetimde destek sürümünü seçtiği SDK sürümünü seçtiniz. – Pedrom

+0

@ @ Teşekkürler bu sorunun cevabını kabul eden akıl hastası? Teşekkürler. http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work –

cevap

29

İşleminizi commit() unuttunuz.

+0

Bu konudaki hakkınız ancak benim sorunumuzu denemek ve daraltmak için bu kararı aldım. Cevabınız için teşekkür ederim, yine de commit() 'i tekrar eklemem gerekecek. – Pedrom

5

Ayrıca, addtoBackStack() yöntemini de çağırmayı unutmuşsunuzdur, aksi halde, uygulamanız geri düğmesine bastığınızda kapanır.

5

ithalatlarınızı edin bu

getSupportFragmentManager().beginTransaction().add(R.id.fragment_container, firstFrag).commit();