2014-07-13 16 views
5

tôi gặp lỗi này trong hoạt động chính của mình khi cố thiết lập trình quản lý để thực hiện các giao dịch phân đoạn. lỗi:Trình quản lý phân đoạn Android không tương thích

loại Incompatiple,

Yêu cầu: Android.Support.v4.app.FragmentManager.

Tìm thấy: Android.app.FragmentManager

trên dòng này:

FragmentManager manager=getFragmentManager(); 

Mã đầy đủ cho các hoạt động chính:

import android.app.Activity; 
import android.app.FragmentTransaction; 
import android.support.v4.app.FragmentActivity; 
import android.support.v4.app.Fragment, 
import android.support.v7.app.ActionBarActivity; 
import android.support.v7.app.ActionBar; 
import android.support.v4.app.FragmentManager; 
import android.content.Context; 
import android.os.Build; 
import android.os.Bundle; 
import android.view.Gravity; 
import android.view.LayoutInflater; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.view.ViewGroup; 
import android.support.v4.widget.DrawerLayout; 
import android.widget.ArrayAdapter; 
import android.widget.TextView; 
import android.widget.Toast; 


public class MainActivity extends ActionBarActivity 
    implements NavigationDrawerFragment.NavigationDrawerCallbacks { 

private NavigationDrawerFragment mNavigationDrawerFragment; 

private FrontFragment mFrontFragment; 

private CharSequence mTitle; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 



    mNavigationDrawerFragment = (NavigationDrawerFragment) 
      getSupportFragmentManager().findFragmentById(R.id.navigation_drawer); 
    mTitle = getTitle(); 

    mFrontFragment = (FrontFragment) 
      getSupportFragmentManager().findFragmentById(R.id.front_fragment); 

    // Set up the drawer. 
    mNavigationDrawerFragment.setUp(
      R.id.navigation_drawer, 
      (DrawerLayout) findViewById(R.id.drawer_layout)); 

    FrontFragment frontFragment = new FrontFragment(); 

    FragmentManager manager=getFragmentManager(); 
} 

@Override 
public void onNavigationDrawerItemSelected(int position) { 
    // update the main content by replacing fragments 
    FragmentManager fragmentManager = getSupportFragmentManager(); 
    fragmentManager.beginTransaction() 
      .replace(R.id.container, PlaceholderFragment.newInstance(position + 1)) 
      .commit(); 
} 

public void onSectionAttached(int number) { 
    switch (number) { 
     case 1: 
      mTitle = getString(R.string.title_section1); 

      FragmentTransaction transaction =manager.beginTransaction(); 
      break; 
     case 2: 
      mTitle = getString(R.string.title_section2); 
      break; 
     case 3: 
      mTitle = getString(R.string.title_section3); 
      break; 
    } 
} 

public void restoreActionBar() { 
    ActionBar actionBar = getSupportActionBar(); 
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD); 
    actionBar.setDisplayShowTitleEnabled(true); 
    actionBar.setTitle(mTitle); 
} 


@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    if (!mNavigationDrawerFragment.isDrawerOpen()) { 
     // Only show items in the action bar relevant to this screen 
     // if the drawer is not showing. Otherwise, let the drawer 
     // decide what to show in the action bar. 
     getMenuInflater().inflate(R.menu.main, menu); 
     restoreActionBar(); 
     return true; 
    } 
    return super.onCreateOptionsMenu(menu); 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle action bar item clicks here. The action bar will 
    // automatically handle clicks on the Home/Up button, so long 
    // as you specify a parent activity in AndroidManifest.xml. 
    int id = item.getItemId(); 
    if (id == R.id.action_settings) { 
     return true; 
    } 
    return super.onOptionsItemSelected(item); 
} 

/** 
* A placeholder fragment containing a simple view. 
*/ 
public static class PlaceholderFragment extends Fragment { 
    /** 
    * The fragment argument representing the section number for this 
    * fragment. 
    */ 
    private static final String ARG_SECTION_NUMBER = "section_number"; 

    /** 
    * Returns a new instance of this fragment for the given section 
    * number. 
    */ 
    public static PlaceholderFragment newInstance(int sectionNumber) { 
     PlaceholderFragment fragment = new PlaceholderFragment(); 
     Bundle args = new Bundle(); 
     args.putInt(ARG_SECTION_NUMBER, sectionNumber); 
     fragment.setArguments(args); 
     return fragment; 
    } 

    public PlaceholderFragment() { 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     View rootView = inflater.inflate(R.layout.fragment_main, container, false); 
     return rootView; 
    } 

    @Override 
    public void onAttach(Activity activity) { 
     super.onAttach(activity); 
     ((MainActivity) activity).onSectionAttached(
       getArguments().getInt(ARG_SECTION_NUMBER)); 
    } 
} 

}

Trả lời

12

Thay đổi dòng này:

FragmentManager manager=getFragmentManager(); 

này:

FragmentManager manager=getSupportFragmentManager(); 
+1

công việc này nhưng bây giờ giao dịch FragmentTransaction tôi = manager.beginTransaction(); không thể thay đổi người quản lý. – Chimpanse

+0

Đó là vì biến 'manager' được khai báo bên trong' onCreate() '. – JDJ

+0

vâng, tất nhiên, xin lỗi về điều đó. tôi mới bắt đầu làm việc với những mảnh vỡ và thực sự bối rối, bây giờ, một câu hỏi cuối cùng. Có ổn không khi sử dụng dòng mã này: android.support.v4.app.FragmentTransaction transaction = manager.beginTransaction(); trông lạ với tôi – Chimpanse

1

Cố gắng sử dụng getSupportFragmentManager() thay vì * getFragmentManager() ;-)

+0

Điều này đã hiệu quả, hãy xem nhận xét của tôi về câu trả lời khác. – Chimpanse

+0

Bạn chỉ được sử dụng một bộ các lớp - từ gói hỗ trợ v4 hoặc từ ứng dụng andoroid :-). Tôi không chắc chắn, nhưng tôi khuyên bạn nên thử nhập _android.support.v4.app.FragmentTransaction_ thay vì _android.app.FragmentTransaction_ – tpcz

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