2016-06-15 97 views
1

我刚刚开始使用Android开发,并试图按照书中的示例编写代码。android如何以及何时使用getSupportFragmentManager(新手感到困惑)

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

所以我开始打探并注意到,默认情况下,我的Android Studio安装显然是使用v4支持库,因此我的碎片是v4碎片而不是标准sdk碎片(如果我误解了情况)..因此,调用getFragmentManager显然不是获得v4片段的正确方法。

显然我应该调用getSupportFragmentManger来代替,但Android Studio说这没有定义。我试着猜测我的主要活动中可能需要什么样的导入,以便能够看到getSupportFragmentManager,但我似乎无法弄清楚。

任何帮助矫直这将是非常感激。

我已经看过谷歌网站上的v4文档,但老实说,对于一个新手来说,它不清楚什么叫什么。

迈克尔

回答

1

如果你想在你的Activity使用支持类,那么它也应该是从支持库的活动。

要完成该活动,您的活动必须延伸至AppCompatActivity

public class MainActivity extends AppCompatActivity { 

    //Your code that calls getSupportFragmentManager() 
} 
+0

这是问题。你是怎么知道AppCompatActivity是我应该使用的?换句话说,编写活动的人会如何知道V4库中的相应内容?是否有一个查找图表说“SDK的X方式在支持库中被替换为Y”?是否可以从SDK和其他支持库中调用某些方法?你怎么知道的?? (我意识到这可能应该是它自己的问题) –

+0

这里有一些官方信息https://developer.android。com/topic/libraries/support-library/index.html,https://developer.android.com/topic/libraries/support-library/features.html。希望能帮助到你 –

0

你应该选择一些选项在这里:

  1. 使用android.support.v7.app.AppCompatActivityandroid.support.v4.app.FragmentActivity为您的活动的父

    公共类MainActivity扩展AppCompatActivity {

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

    }

  2. 相反的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); 
    
        android.app.FragmentManager fragmentManager = getFragmentManager(); 
    } 
    

    }