我试图简单地用另一个替换一个自定义片段。第一个自定义片段被称为MenuFragment
并延伸ListFragment
。当创建活动(的onCreate)我在布局(称为layout_container
)我在XML定义插入:自定义片段不能转换为其他自定义片段
FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
MenuFragment menufragment = new MenuFragment();
fragmentTransaction.add(R.id.layout_container, menufragment);
fragmentTransaction.commit();
在这里,我没有问题。
然后,我想用第二个片段AlbumsFragment
(它也延伸ListFragment
)替换它,当用户点击某物时。在我的onClick事件,我把:
AlbumsFragment albumsfragment = new AlbumsFragment();
FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.layout_container, albumsfragment);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
这里的新片段很好的展示和替换menufragment但在同一时间的应用程序崩溃和logcat的说:
E/AndroidRuntime(25105): java.lang.ClassCastException: com.music.musicapp.AlbumsFragment cannot be cast to com.music.musicapp.MenuFragment
我只使用并针对Api级别15,所以我不使用Android支持包。
编辑: 这里是我的专辑片段的代码,很简单,它只是一个带有两个项目“Album1”和“Album2”名单。点击执行后,我可以看到这两个项目,但立即崩溃。
package com.music.musicapp;
import java.util.ArrayList;
import android.app.ListFragment;
import android.os.Bundle;
import android.widget.ArrayAdapter;
public class AlbumsFragment extends ListFragment {
// declare the array list
ArrayList<String> array = new ArrayList<String>();
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
// Fill up Array
array.add("album1");
array.add("album2");
setListAdapter(new ArrayAdapter<String>(getActivity(),
android.R.layout.simple_list_item_1, array));
}
}
我在任何地方发布的代码中都看不到转换......是代码中的其他位置?如果片段显示,这是片段的代码中的问题。发布您的专辑片段代码。 – Barak