2013-07-20 69 views
0

我一直在嘗試在我的應用程序中實現一個listview,現在我正在使用actionbarsherlock。我有這個android.support.v4.Fragment錯誤了一段時間,這是需要修復/我知道我必須使用actionbarsherlock的東西,但我不確定什麼,因爲我已經試過FragmentActivity,活動和SherlockActivity讓它跑。 CustomizedListView.class是ListView所在的位置,而屬於選項卡系統一部分的其他類正常工作。這裏是logcat的:使用FragmentActivity,Activity和SherlockActivity的錯誤 - Android

07-20 09:21:01.673 1389-1389/com.example.release E/Trace: error opening trace file: No such file or directory (2) 
07-20 09:21:01.869 1389-1389/com.example.release E/AndroidRuntime: FATAL EXCEPTION: main 
    java.lang.ClassCastException: com.example.release.CustomizedListView   cannot be cast to android.support.v4.app.Fragment 
    at android.support.v4.app.Fragment.instantiate(Fragment.java:394) 
    at com.example.release.TabSwipe.getItem(TabSwipe.java:98) 
    at android.support.v4.app.FragmentPagerAdapter.instantiateItem(FragmentPagerAdapter.java:97) 
    at android.support.v4.view.ViewPager.addNewItem(ViewPager.java:829) 
    at android.support.v4.view.ViewPager.populate(ViewPager.java:979) 
    at android.support.v4.view.ViewPager.populate(ViewPager.java:911) 
    at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1432) 
    at android.view.View.measure(View.java:15518) 
    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4825) 
    at android.widget.FrameLayout.onMeasure(FrameLayout.java:310) 
    at android.view.View.measure(View.java:15518) 
    at android.widget.LinearLayout.measureVertical(LinearLayout.java:847) 
    at android.widget.LinearLayout.onMeasure(LinearLayout.java:588) 
    at android.view.View.measure(View.java:15518) 
    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4825) 
    at android.widget.FrameLayout.onMeasure(FrameLayout.java:310) 
    at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2176) 
    at android.view.View.measure(View.java:15518) 
    at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1874) 
    at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1089) 
    at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1265) 
    at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:989) 
    at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4351) 
    at android.view.Choreographer$CallbackRecord.run(Choreographer.java:749) 
    at android.view.Choreographer.doCallbacks(Choreographer.java:562) 
    at android.view.Choreographer.doFrame(Choreographer.java:532) 
    at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:735) 
    at android.os.Handler.handleCallback(Handler.java:725) 
    at android.os.Handler.dispatchMessage(Handler.java:92) 
    at android.os.Looper.loop(Looper.java:137) 
    at android.app.ActivityThread.main(ActivityThread.java:5041) 
    at java.lang.reflect.Method.invokeNative(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:511) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
    at dalvik.system.NativeStart.main(Native Method) 

我有一些代碼在我MainActivity.class標籤這可能是導致它,它可能是因爲我忘了這樣做的片段。

MainActivity.class

import android.os.Bundle; 
import android.support.v4.view.ViewPager; 

import com.actionbarsherlock.app.ActionBar; 
import com.actionbarsherlock.app.SherlockFragmentActivity; 

public class MainActivity extends SherlockFragmentActivity { 

private ViewPager mViewPager; 
private TabSwipe mTabSwipe; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    mViewPager = new ViewPager(this); 
    mViewPager.setId(R.id.pager); 
    setContentView(mViewPager); 

    final ActionBar bar = getSupportActionBar(); 
    bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 

    mTabSwipe = new TabSwipe(this, mViewPager); 
    mTabSwipe.addTab(bar.newTab().setText("This"), CustomizedListView.class, null); 
    mTabSwipe.addTab(bar.newTab().setText("That"), Purchase_Fragment.class, null); 
    mTabSwipe.addTab(bar.newTab().setText("Null"), Purchase_Fragment.class, null); 


    } 
} 

CustomizedListView.class

import java.util.ArrayList; 
import java.util.HashMap; 

import org.w3c.dom.Document; 
import org.w3c.dom.Element; 
import org.w3c.dom.NodeList; 

import android.app.Activity; 
import android.os.Bundle; 
import android.support.v4.app.FragmentActivity; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.AdapterView.OnItemClickListener; 
import android.widget.ListView; 

import com.actionbarsherlock.app.SherlockActivity; 

public class CustomizedListView extends Activity { 
// All static variables 
static final String URL = "http://api.androidhive.info/music/music.xml"; 
// XML node keys 
static final String KEY_SONG = "song"; // parent node 
static final String KEY_ID = "id"; 
static final String KEY_TITLE = "title"; 
static final String KEY_ARTIST = "artist"; 
static final String KEY_DURATION = "duration"; 
static final String KEY_THUMB_URL = "thumb_url"; 

ListView list; 
LazyAdapter adapter; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 


    ArrayList<HashMap<String, String>> songsList = new ArrayList<HashMap<String, String>>(); 

    XMLParser parser = new XMLParser(); 
    String xml = parser.getXmlFromUrl(URL); // getting XML from URL 
    Document doc = parser.getDomElement(xml); // getting DOM element 

    NodeList nl = doc.getElementsByTagName(KEY_SONG); 
    // looping through all song nodes <song> 
    for (int i = 0; i < nl.getLength(); i++) { 
     // creating new HashMap 
     HashMap<String, String> map = new HashMap<String, String>(); 
     Element e = (Element) nl.item(i); 
     // adding each child node to HashMap key => value 
     map.put(KEY_ID, parser.getValue(e, KEY_ID)); 
     map.put(KEY_TITLE, parser.getValue(e, KEY_TITLE)); 
     map.put(KEY_ARTIST, parser.getValue(e, KEY_ARTIST)); 
     map.put(KEY_DURATION, parser.getValue(e, KEY_DURATION)); 
     map.put(KEY_THUMB_URL, parser.getValue(e, KEY_THUMB_URL)); 

     // adding HashList to ArrayList 
     songsList.add(map); 
    } 


    list=(ListView)findViewById(R.id.list); 

    // Getting adapter by passing xml data ArrayList 
    adapter=new LazyAdapter(this, songsList); 
    list.setAdapter(adapter); 


    // Click event for single list row 
    list.setOnItemClickListener(new OnItemClickListener() { 

     @Override 
     public void onItemClick(AdapterView<?> parent, View view, 
           int position, long id) { 


      } 
     }); 
    } 
} 

回答

0

CustomizedListView應該擴展Fragment而不是Activity因爲mtabwipe.addtab(...)預計片段

相關問題