我有一个简单的 Activity ,按预期运行。

import android.app.Activity;
import android.app.FragmentManager;
// import android.support.v4.app.FragmentManager;
import android.os.Bundle;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // FragmentManager fm = getSupportFragmentManager(); // ActionBarActivity
        FragmentManager fm = getFragmentManager(); // Activity
    }
}

然后我更换了
import android.app.FragmentManager;


import android.support.v4.app.FragmentManager;

因此我可以支持较旧的设备。但是,这将报告错误:
Incompatible types.

    Required: android.support.v4.app.FragmentManager

    Found: android.app.FragmentManager

我在这里做错了什么?

我发现的流行解决方案是改用getSupportFragmentManager(),但这仅适用于ActionBarActivites [edit-查看答案]和FragmentActivities。

cannot convert from android.app.FragmentManager to android.support.v4.app.FragmentManager

其他相关解决方案则指向使用FragmentActivity,但这似乎具有相同的遗留问题。

The method getFragmentManager() is undefined for the type MyActivity
import android.support.v4.app.FragmentManager;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;

    public class MainActivity extends FragmentActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //setContentView(R.layout.activity_main);
        // FragmentManager fm = getSupportFragmentManager(); // ActionBarActivity
        FragmentManager fm = getFragmentManager();
    }
}

我很确定解决方案已经在SE上,但是(对我来说)很难找到。最小的示例也应该帮助其他人理解它。
  • 我是Android的新手。
  • 最佳答案

    在第一种情况下,如果您使用getSupportFragmentManager(),则需要扩展FragmentActivity或扩展ActionBarActivity(扩展FragmentActivity),因为FragmentActivity是基于支持的片段的基类。

    在第二种情况下,您需要使用getSupportFragmentManager()而不是getFragmentManager()

    将碎片引入蜂窝中。为了支持蜂窝下面的片段,您需要使用支持库中的片段,在这种情况下,您需要扩展FragmentActivity并使用getSupportFragmentManager()

    关于android - 具有Activity的v4 getFragmentManager-不兼容的类型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25321222/

    10-10 18:10