Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/222.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java android如何以及何时使用getSupportFragmentManager(新手感到困惑)_Java_Android - Fatal编程技术网

Java android如何以及何时使用getSupportFragmentManager(新手感到困惑)

Java android如何以及何时使用getSupportFragmentManager(新手感到困惑),java,android,Java,Android,我刚刚开始安卓开发,我试图在一本书中引用一个例子,但它不是编译的 这本书让我在应用程序中创建一个片段,然后在MainActivity中与该片段交互;具体来说,本书要求在主活动中调用getFragmentManager().findFragmentByID(..),以便访问此片段,但这返回了一个错误,即getFragmentManager的结果无法转换为正确的类型 因此,我开始四处闲逛,并注意到默认情况下,我安装的Android Studio显然使用了v4支持库,因此我的片段是v4片段,而不是标准

我刚刚开始安卓开发,我试图在一本书中引用一个例子,但它不是编译的

这本书让我在应用程序中创建一个片段,然后在MainActivity中与该片段交互;具体来说,本书要求在主活动中调用getFragmentManager().findFragmentByID(..),以便访问此片段,但这返回了一个错误,即getFragmentManager的结果无法转换为正确的类型

因此,我开始四处闲逛,并注意到默认情况下,我安装的Android Studio显然使用了v4支持库,因此我的片段是v4片段,而不是标准sdk片段(如果我误解了情况,请纠正我)。。因此,调用getFragmentManager显然不是获取v4片段的正确方法

显然,我应该打电话给getSupportFragmentManger,但Android Studio表示这还没有定义。我试着猜测在我的主要活动中可能需要什么样的导入才能看到getSupportFragmentManager,但我似乎也不知道

如果您能帮助解决这个问题,我们将不胜感激

我已经看过谷歌网站上的v4文档,但老实说,对于一个新手来说,不清楚什么调用会伴随什么


Michael

如果您想在
活动中使用支持类
,那么它也应该是支持库中的活动

要实现这一点,您的活动必须扩展
AppCompatActivity

public class MainActivity extends AppCompatActivity {

    //Your code that calls getSupportFragmentManager()
} 

您应该在此处选择一些选项:

  • 使用
    android.support.v7.app.AppCompatActivity
    android.support.v4.app.FragmentActivity
    作为活动的父级

    公共类MainActivity扩展了AppCompatActivity{

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    
        FragmentManager supportFragmentManager = getSupportFragmentManager();
    }
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    
        android.app.FragmentManager fragmentManager = getFragmentManager();
    }
    
    }

  • 不要使用
    android.support.v4.Fragment
    ,而是使用
    android.app.Fragment
    ,只需使用android.app.FragmentManger即可

    公共类MainActivity扩展了活动{

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    
        FragmentManager supportFragmentManager = getSupportFragmentManager();
    }
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    
        android.app.FragmentManager fragmentManager = getFragmentManager();
    }
    
    }


  • 这就是问题所在。你怎么知道AppCompatActivity是我应该使用的?或者换句话说,编写活动的人如何知道V4库中的等价物是什么?是否在某个地方有一个查找图表,上面写着“在支持库中,SDK执行X的方式被Y取代”?从SDK调用一些方法和从支持库调用其他方法是否可以?你怎么知道??(我意识到这可能是它自己的问题)以下是一些官方信息。希望能有帮助