我試圖簡單地用另一個替換一個自定義片段。第一個自定義片段被稱爲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