我是Android編程的初學者。我想編寫一個帶有片段的程序,我閱讀本教程(http://www.mysamplecode.com/2012/08/android-fragment-example.html)並編寫該代碼,但是當我運行該程序時,該程序出現編譯器錯誤! 這些錯誤是關於add()和replace()函數的。我如何解決這個錯誤和轉換類型?
我在下面寫了AndroidFragmentActivity類,請閱讀並幫助我。
AndoridFragmentActivity.java:
package com.appfragmentarray;
import android.app.Activity;
import android.os.Bundle;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.app.FragmentActivity;
import android.util.Log;
import com.appfragmentarray.ListFragment.OnURLSelectedListener;
public class AndroidFragmentActivity extends Activity implements OnURLSelectedListener{
boolean detailPage = false;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.v("AndroidFragmentActivity", "onCreate()");
Log.v("AndroidFragmentsavedInstanceState", savedInstanceState == null ? "true" : "false");
setContentView(R.layout.activity_main);
if(savedInstanceState == null) {
android.app.FragmentTransaction ft = getFragmentManager().beginTransaction();
ListFragment listFragment = new ListFragment();
ft.add(R.id.displayList, listFragment, "List_Fragment");
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
ft.commit();
}
if(findViewById(R.id.displayDetail) != null){
detailPage = true;
getFragmentManager().popBackStack();
DetailFragment detailFragment = (DetailFragment) getFragmentManager().findFragmentById(R.id.displayDetail);
if(detailFragment == null){
android.app.FragmentTransaction ft = getFragmentManager().beginTransaction();
detailFragment = new DetailFragment();
ft.replace(R.id.displayDetail, detailFragment, "Detail_Fragment1");
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
ft.commit();
}
}
}
public void onURLSelected(String URL) {
Log.v("AndroidFragmentActivity",URL);
if(detailPage){
DetailFragment detailFragment = (DetailFragment)
getFragmentManager().findFragmentById(R.id.displayDetail);
detailFragment.updateURLContent(URL);
}
else{
DetailFragment detailFragment = new DetailFragment();
detailFragment.setURLContent(URL);
android.app.FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace(R.id.displayList, detailFragment, "Detail_Fragment2");
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
ft.addToBackStack(null);
ft.commit();
}
}
}
的錯誤是:
不能從片段投射到DetailFragment
的方法Add(INT,片段,字符串)在類型FragmentTransaction 不適用於參數(int,ListFragment,String)
的方法代替(INT,片段,字符串)在 型FragmentTransaction不適用的參數(INT, DetailFragment,字符串)
我怎樣才能解決這個問題呢?謝謝。
感謝快速回復。你的意思是,我應該導入support.v4.app或導入support.app supportFragmentManager()和添加()等不是都tehm?這是真的? –
@NiceNICE'supportFragmentManager()'和'add()'是您已經導入的'android.support.v4.app.FragmentTransaction' * class *的一部分*方法。只需確保您現在調用'getSupportFragmentManager()'而不是'getFragmentManager()'。 'add()'方法是相同的,如果你在Eclipse中按'ctrl + shift + O'來修復導入,請確保你擴展了'FragmentActivity'。 –
getSupportFragmentManger()適用於Android 3+。這是真的?如果我在manifest文件中聲明minsdkVersion = 9,如果程序在android 2.3的設備上運行,會發生什麼? (我導入android.support.v4.app不android.app)。 –