被android.support.v4.app.FragmentActivity和android.app.FragmentTransaction弄糊涂了

被android.support.v4.app.FragmentActivity和android.app.FragmentTransaction弄糊涂了,android,Android,我对android.support.v4.app的支持包android.support有点困惑,因为 我实现了一个扩展android.support.v4.app.FragmentActivity的类,并注意到 它有一些方法,这些方法将android.app.FragmentTransaction作为参数。 为什么他们不期望android.support.v4.app.FragmentTransaction 我仍然没有弄清楚Fragment、DialogFragment、FragmentMana

我对android.support.v4.app的支持包
android.support有点困惑,因为
我实现了一个扩展android.support.v4.app.FragmentActivity的类,并注意到
它有一些方法,这些方法将
android.app.FragmentTransaction
作为参数。 为什么他们不期望android.support.v4.app.FragmentTransaction

我仍然没有弄清楚
Fragment
DialogFragment
FragmentManager
等之间的区别。 与常规软件包相比,来自支持软件包。我什么时候用什么

例如,我从常规包中实现了一个
DialogFragment
,并在我所有的应用程序中使用它 当我必须向用户发出警报时,我会提醒用户。不幸的是,我现在不得不写作 antother
DialogFragment
从支持包实现超类型,因为我 一些片段正在使用支持包中的实现。我不能改变 因为它们不是我的

public class DiagramsActivity extends FragmentActivity implements TabListener, OnPageChangeListener {
    private ViewPager viewPager = null;
    private FragmentPagerAdapter fragmentPager = null;

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

        this.fragmentPager = new DiagramsFragmentPagerAdapter(this.getSupportFragmentManager());

        this.setContentView(R.layout.activity_diagrams); 

        this.viewPager = (ViewPager) this.findViewById(R.id.diagrams_pager);
        this.viewPager.setOnPageChangeListener(this);
        this.viewPager.setAdapter(this.fragmentPager);
        this.actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
        this.actionBar.addTab(actionBar.newTab().setText(this.getResources().getString(R.string.text_line)).setTabListener(this));
        this.actionBar.addTab(actionBar.newTab().setText(this.getResources().getString(R.string.text_bar)).setTabListener(this));
        this.actionBar.addTab(actionBar.newTab().setText(this.getResources().getString(R.string.text_scatter)).setTabListener(this));
        this.actionBar.addTab(actionBar.newTab().setText(this.getResources().getString(R.string.text_pie)).setTabListener(this));
    }

    @Override
    public void onTabSelected(Tab tab, android.app.FragmentTransaction fragmentTransaction) {
        this.viewPager.setCurrentItem(tab.getPosition());
    }

    @Override
    public void onTabUnselected(Tab tab, android.app.FragmentTransaction fragmentTransaction) {}

    @Override
    public void onTabReselected(Tab tab, android.app.FragmentTransaction fragmentTransaction) {}

    @Override
    public void onPageScrollStateChanged(int state) {}

    @Override
    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {}

    @Override
    public void onPageSelected(int position) {
        this.actionBar.setSelectedNavigationItem(position);
    }

    private void performChooseDates() {
        FragmentTransaction fragmentTransaction = this.getSupportFragmentManager().beginTransaction();
        MeasureDataSelectionDialogFragment measureDataGetSelectionDialogFragment = new MeasureDataSelectionDialogFragment();

        measureDataGetSelectionDialogFragment.setCallback(this);
        measureDataGetSelectionDialogFragment.show(fragmentTransaction, null);
    }
}
FragmentActivity
来自支持包。来自
TabListener
的方法需要
android.app.FragmentTransaction
我的方法
performchoostates()
。因此,我(从我的角度来看)有一个丑陋的支持一揽子计划和常规一揽子计划的组合。代码中提到的Viewpager
而且FragmentPagerAdapter也来自支持包,因为它们不存在于常规包中。

我编写的所有应用程序都需要支持Android 2.3,这是最简单的方法。 如果您支持11+,请坚持使用
android.app.Fragment

android.support.v4.app.Fragment
是android支持库中的类,它是一个兼容包,允许您在较旧版本的android上使用android的一些较新功能。
android.support.v4.app.Fragment
是一个库,您可以使用它来获得旧API版本的向后兼容性

android.app.Fragment
是android SDK本机版本中的类。它是在API 11中引入的。
如果你想让你的应用程序使用片段,并且想在API 11之前瞄准设备,你必须使用
android.support.v4.app.Fragment
。如果您只针对运行API 11或更高版本的设备,您可以使用
android.app.Fragment

,但某些类仅可使用支持包获得,不是吗?我使用了一个示例类android.support.v4.view.ViewPager,在常规包中找不到一个ViewPager。为此,您必须添加android支持库检查,这样我将得到支持包和常规包的混合,即使我只支持api级别13及更高版本…我没有收到任何错误。我只是想问一下这两个软件包的不同之处,以及为什么在我不支持低于13的API的情况下必须将它们混合在一起。我解释说,我使用viewpager作为示例,它只存在于支持包中。因此,该支持包似乎不仅仅用于支持较旧的API。是在api 13+中引入的,因此要在较低版本中使用它,您需要
v4
jar