5

Tôi đang sử dụng ActionBarSherlock, tôi không thể đi đến lớp mà kéo dài SherlockFragment từ hoạt độngLàm thế nào để đi đến đoạn từ hoạt động

Tôi cần phải di chuyển từ Hoạt động đến lớp mảnh

Đây là lớp Hoạt động của tôi

Intent notificationIntent = new Intent(context,MessagesFragment.class); 

Và lớp Fragment là như

public class MessagesFragment extends SherlockFragment implements 
    OnItemClickListener { 

// Layout parameters declaration 
private PullToRefreshListView lv_messages; 
private ImageView iv_no_data; 
private LinearLayout ll_bg; 

public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 
    getSherlockActivity().getSupportActionBar().setDisplayOptions(
      ActionBar.DISPLAY_SHOW_CUSTOM); 
    getSherlockActivity().getSupportActionBar().setDisplayHomeAsUpEnabled(
      true); 
    getSherlockActivity().getSupportActionBar().setHomeButtonEnabled(true); 
    getSherlockActivity().getSupportActionBar().setDisplayShowHomeEnabled(
      true); 
    getSherlockActivity().getSupportActionBar().setCustomView(
      R.layout.header); 
    getSherlockActivity().getSupportActionBar().setBackgroundDrawable(
      new ColorDrawable(Color.parseColor("#009fe3"))); 
    TextView txt = (TextView) getActivity().findViewById(
      R.id.tv_title_header); 
    Typeface font = Typeface.createFromAsset(getActivity().getAssets(), 
      "georgia.ttf"); 
    txt.setText("MESSAGES"); 
    txt.setTypeface(font); 
    return inflater.inflate(R.layout.listview_refreshable, null); 
} 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setHasOptionsMenu(true); 
} 
. 
. 
. 
. 
} 

Nếu tôi sử dụng phương pháp switchfragment nó cho thấy nhiều sai sót trong FragmentChangeActivity

private void switchFragment(Fragment fragment) { 
    if (getActivity() == null) 
     return; 

    if (getActivity() instanceof FragmentChangeActivity) { 
     FragmentChangeActivity fca = (FragmentChangeActivity) getActivity(); 
     fca.switchContent(fragment); 

    } 
} 
+1

Không có ý tưởng gì chính xác bạn đang yêu cầu. ActionbarSherlock hỗ trợ các mảnh, và nếu bạn đi đến github của mình, bạn sẽ tìm thấy một tải các ví dụ sử dụng chúng. –

+0

Tôi không thể chuyển từ hoạt động sang lớp phân đoạn – sarabu

Trả lời

11

Bạn cần phải tạo ra một lớp mà kéo dài FragmentActivity và bắt đầu yourfragment có

public class MessagesFragmentActivity extends SherlockFragmentActivity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     if (savedInstanceState == null){ 
      getSupportFragmentManager().beginTransaction() 
        .add(android.R.id.content, new MessagesFragment()).commit();} 
    } 
} 

constructor mảnh của bạn.

public YourFragment() { 
} 

sau đó từ bạn gọi hoạt động, bắt đầu hoạt động mảnh của bạn theo cách thông thường

Intent i = new Intent(YourActivity.this,MessagesFragment.class); 
startActivity(i); 
+0

Hoạt động. Đấu tranh rất nhiều cho mã này. – sarabu

0

Bạn không thể làm điều đó. Bởi vì mỗi Fragment được chứa trong một Activity, Vì vậy, bạn chỉ có thể nhảy đến một Activity có chứa Fragment đó.

1

Sử dụng FragmentTransaction để chuyển đến bất kỳ Phân đoạn nào bạn muốn. Nếu bạn có một vài Fragments, phương thức này sẽ chuyển đổi giữa chúng.

Dưới đây là hướng:

public enum FragmentsAvailable {  
HISTORY 
} 


public class MyActivity extends FragmentActivity 
... 

private void changeFragment(Fragment newFragment, FragmentsAvailable newFragmentType, boolean withoutAnimation) { 


    FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); 


    try { 
     getSupportFragmentManager().popBackStackImmediate(newFragmentType.toString(), FragmentManager.POP_BACK_STACK_INCLUSIVE); 
    } catch (java.lang.IllegalStateException e) { 

    } 

    transaction.addToBackStack(newFragmentType.toString()); 
    transaction.replace(R.id.fragmentContainer, newFragment); 
    transaction.commitAllowingStateLoss(); 
    getSupportFragmentManager().executePendingTransactions(); 


} 
+0

nơi để giữ mã này? trong hoạt động của tôi hoặc tôi nên tạo một lớp học. Và ở đây thậm chí không có lớp học để vượt qua nó – sarabu

+0

Bạn đặt nó vào Hoạt động của bạn. Tôi chắc chắn bằng các từ khóa bạn có thể tìm đủ thông tin trong google –

+0

Nó hiển thị lỗi cho 'getSupportFragmentManager' – sarabu

0

Một đoạn được Kèm theo một hoạt động, bạn có thể Thêm một mảnh hoặc Thay thế một mảnh với FragmentTransition. Lưu ý rằng một mảnh cần một hoạt động để tồn tại!

Bạn không đi từ hoạt động này sang phân đoạn khác ... Nhưng nếu bạn đang ở trong một hoạt động có chứa đoạn bạn có thể mở một hoạt động mới trên đầu tiên.

+0

Giả định của bạn là sai. Chúng tôi có thể di chuyển từ hoạt động này sang phân đoạn khác theo mã bên dưới – sarabu

+0

Dĩ nhiên bạn đã đúng, tôi chỉ đưa ra lời khuyên về việc sử dụng chính các mảnh vỡ. Bạn nên thừa nhận rằng đây không phải là sử dụng phổ biến. Nếu bạn xem xét các phương pháp hay nhất của google, các đoạn mã rõ ràng có nghĩa là thích ứng với giao diện người dùng giữa tai nghe, máy tính bảng và các thay đổi định hướng ... Xuống bỏ phiếu cho câu trả lời cho loại lý do đó là ngu ngốc:/ –

Các vấn đề liên quan