2016-06-15 21 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(); 
    } 
    

    }