Nic*_*ICE 1 android compiler-errors fragment
我是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();
}
}
}
Run Code Online (Sandbox Code Playgroud)
错误是:
无法从Fragment转换为DetailFragment
在类型FragmentTransaction的方法Add(INT,片段,字符串)是不适用的参数(INT,ListFragment,字符串)
该方法在类型FragmentTransaction替换(INT,片段,字符串)是不适用的参数(INT,DetailFragment,字符串)
我该如何解决这个问题?谢谢.
如果要使用兼容包:
请AndroidFragmentActivity延长FragmentActivity
更改
android.app.FragmentTransaction ft = getFragmentManager().beginTransaction();
Run Code Online (Sandbox Code Playgroud)
至
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
Run Code Online (Sandbox Code Playgroud)
并确保所有的电话getFragmentManager()都是getSupportFragmentManager()
确保你的碎片延伸android.support.v4.app.Fragment而不是android.app.Fragment
要么
如果你想使用普通的碎片,摆脱所有的support.v4进口,并确保你的碎片使用android.app.Fragment,这是不兼容的碎片.
| 归档时间: |
|
| 查看次数: |
2808 次 |
| 最近记录: |