2012-08-24 29 views
21

Tôi đã tạo một tệp xml có tên editor.xml chứa một FrameLayout. Trong hoạt động chính của tôi, tôi đang cố gắng thêm phân đoạn tùy chỉnh vào FrameLayout của mình.Đang cố thêm một đoạn vào vùng chứa phân đoạn của tôi FrameLayout

Các lỗi tôi nhận được khi cố gắng để thêm đoạn của tôi là:

Các phương thức add (int, Fragment) trong các loại FragmentTransaction không áp dụng cho các đối số (int, editorFrag)

Tuy nhiên editorFrag của tôi mở rộng Fragment để tôi bối rối về lý do tại sao điều này xảy ra. Dưới đây là mã của tôi cho các tập tin tôi đã đề cập. Bất kỳ trợ giúp được đánh giá cao.

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); 
     } 
    } 
} 

trả lời:

Luksprog đã trả lời vấn đề này đối với tôi dưới đây bằng cách nói với tôi đến c heck nhập khẩu của tôi. Eclipse đã chọn nhập phiên bản SDK của Fragment thay vì phiên bản hỗ trợ mà tôi cần. Cảm ơn bạn vì sự giúp đỡ.

+0

Kiểm tra hàng nhập khẩu của bạn. Xem nếu bạn không nhập phiên bản 'SDK' của' Fragment' thay vì gói tương thích 'Fragment'. – Luksprog

+0

Bạn chính xác, tôi cho phép nhập nhật thực cho tôi và nó thực sự đã chọn phiên bản SDK trong hoạt động của tôi, nó đã chọn phiên bản hỗ trợ. Cảm ơn bạn rất nhiều – Pedrom

+0

@Perdom tâm chấp nhận câu trả lời cho câu hỏi này? Cảm ơn. http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work –

Trả lời

29

Bạn quên commit() giao dịch của mình.

+0

Quyền của bạn trong thực tế đó nhưng tôi đã thực hiện cam kết để thử và thu hẹp sự cố của tôi. Cảm ơn bạn đã trả lời, tôi sẽ cần phải thêm commit() một lần nữa. – Pedrom

5

Bạn cũng quên gọi phương thức addtoBackStack(), nếu không ứng dụng của bạn sẽ đóng khi bạn nhấn nút quay lại.

5

thêm cam kết() như thế này

getSupportFragmentManager().beginTransaction().add(R.id.fragment_container, firstFrag).commit(); 
Các vấn đề liên quan