2014-03-06 52 views
0

當我運行我的應用程序時,一切都運行完好,直到我選擇第三個選項卡組成我所做的listfragment,因此它顯示與數據和圖像的列表視圖,一旦選擇該應用程序只給出正常的消息不幸的是應用程序停止工作,logcat發送大量的紅色錯誤。當選中選項卡並出現錯誤時,Listfragment崩潰

03-06 01:44:23.200: D/dalvikvm(879): GC_FOR_ALLOC freed 99K, 6% free 3113K/3280K, paused 57ms, total 59ms 
03-06 01:44:23.410: D/dalvikvm(879): GC_FOR_ALLOC freed 20K, 5% free 3143K/3280K, paused 20ms, total 21ms 
03-06 01:44:23.410: I/dalvikvm-heap(879): Grow heap (frag case) to 3.811MB for 709972-byte allocation 
03-06 01:44:23.450: D/dalvikvm(879): GC_FOR_ALLOC freed <1K, 4% free 3836K/3976K, paused 33ms, total 33ms 
03-06 01:44:23.530: D/(879): HostConnection::get() New Host Connection established 0xb7a51a38, tid 879 
03-06 01:44:23.690: W/EGL_emulation(879): eglSurfaceAttrib not implemented 
03-06 01:44:23.700: D/OpenGLRenderer(879): Enabling debug mode 0 
03-06 01:44:35.760: D/AndroidRuntime(879): Shutting down VM 
03-06 01:44:35.760: W/dalvikvm(879): threadid=1: thread exiting with uncaught exception (group=0xb4aa8ba8) 
03-06 01:44:35.810: E/AndroidRuntime(879): FATAL EXCEPTION: main 
03-06 01:44:35.810: E/AndroidRuntime(879): Process: com.TIPA.uips, PID: 879 
03-06 01:44:35.810: E/AndroidRuntime(879): java.lang.RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list' 
03-06 01:44:35.810: E/AndroidRuntime(879): at android.support.v4.app.ListFragment.ensureList(ListFragment.java:344) 
03-06 01:44:35.810: E/AndroidRuntime(879): at android.support.v4.app.ListFragment.onViewCreated(ListFragment.java:145) 
03-06 01:44:35.810: E/AndroidRuntime(879): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:941) 
03-06 01:44:35.810: E/AndroidRuntime(879): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1104) 
03-06 01:44:35.810: E/AndroidRuntime(879): at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682) 
03-06 01:44:35.810: E/AndroidRuntime(879): at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1467) 
03-06 01:44:35.810: E/AndroidRuntime(879): at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:472) 
03-06 01:44:35.810: E/AndroidRuntime(879): at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:141) 
03-06 01:44:35.810: E/AndroidRuntime(879): at android.support.v4.view.ViewPager.populate(ViewPager.java:1068) 
03-06 01:44:35.810: E/AndroidRuntime(879): at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:550) 
03-06 01:44:35.810: E/AndroidRuntime(879): at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:509) 
03-06 01:44:35.810: E/AndroidRuntime(879): at android.support.v4.view.ViewPager.setCurrentItem(ViewPager.java:490) 
03-06 01:44:35.810: E/AndroidRuntime(879): at com.TIPA.uips.MainActivity.onTabSelected(MainActivity.java:71) 
03-06 01:44:35.810: E/AndroidRuntime(879): at com.android.internal.app.ActionBarImpl.selectTab(ActionBarImpl.java:577) 
03-06 01:44:35.810: E/AndroidRuntime(879): at com.android.internal.app.ActionBarImpl$TabImpl.select(ActionBarImpl.java:1105) 
03-06 01:44:35.810: E/AndroidRuntime(879): at com.android.internal.widget.ScrollingTabContainerView$TabClickListener.onClick(ScrollingTabContainerView.java:547) 
03-06 01:44:35.810: E/AndroidRuntime(879): at android.view.View.performClick(View.java:4438) 
03-06 01:44:35.810: E/AndroidRuntime(879): at android.view.View$PerformClick.run(View.java:18422) 
03-06 01:44:35.810: E/AndroidRuntime(879): at android.os.Handler.handleCallback(Handler.java:733) 
03-06 01:44:35.810: E/AndroidRuntime(879): at android.os.Handler.dispatchMessage(Handler.java:95) 
03-06 01:44:35.810: E/AndroidRuntime(879): at android.os.Looper.loop(Looper.java:136) 
03-06 01:44:35.810: E/AndroidRuntime(879): at android.app.ActivityThread.main(ActivityThread.java:5017) 
03-06 01:44:35.810: E/AndroidRuntime(879): at java.lang.reflect.Method.invokeNative(Native Method) 
03-06 01:44:35.810: E/AndroidRuntime(879): at java.lang.reflect.Method.invoke(Method.java:515) 
03-06 01:44:35.810: E/AndroidRuntime(879): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 
03-06 01:44:35.810: E/AndroidRuntime(879): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 
03-06 01:44:35.810: E/AndroidRuntime(879): at dalvik.system.NativeStart.main(Native Method) 
03-06 01:44:39.230: I/Process(879): Sending signal. PID: 879 SIG: 9 

,我在這個類改變了其使用是extends Fragmentextends ListFragment主要的事情我相信這是產生錯誤,雖然不知道怎麼辦?

package com.TIPA.uips; 

import com.TIPA.uips.R; 
import android.os.Bundle; 
import android.support.v4.app.ListFragment; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.content.Context; 
import android.widget.ArrayAdapter; 
import android.widget.ImageView; 
import android.widget.ListView; 
import android.widget.TextView; 
import android.widget.Toast; 

public class FriendsList extends ListFragment { 

    public class MyListAdapter extends ArrayAdapter<String> { 

     Context myContext; 

     public MyListAdapter(Context context, int textViewResourceId, 
     String[] objects) { 
     super(context, textViewResourceId, objects); 
     myContext = context; 
     } 

     @Override 
     public View getView(int position, View convertView, ViewGroup parent) { 
     //return super.getView(position, convertView, parent); 

     LayoutInflater inflater = 
     (LayoutInflater)myContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     View row=inflater.inflate(R.layout.row, parent, false); 
     TextView label=(TextView)row.findViewById(R.id.carrottop); 
     label.setText(month[position]); 
     ImageView icon=(ImageView)row.findViewById(R.id.dp); 

     //Customize your icon here 
     icon.setImageResource(R.drawable.dp); 

     return row; 
     } 

    } 

    String[] month ={ 
     "^Smithy", 
     "^Kreso", 
     "^Chen", 
     "^Dave" 
    }; 

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

     /* 
     ListAdapter myListAdapter = new ArrayAdapter<String>(
     getActivity(), 
     android.R.layout.simple_list_item_1, 
     month); 
     setListAdapter(myListAdapter); 
     */ 
     MyListAdapter myListAdapter = 
     new MyListAdapter(getActivity(), R.layout.row, month); 
     setListAdapter(myListAdapter); 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 
     return inflater.inflate(R.layout.friends_list, container, false); 
    } 

    @Override 
    public void onListItemClick(ListView l, View v, int position, long id) { 
     Toast.makeText(
     getActivity(), 
     getListView().getItemAtPosition(position).toString(), 
     Toast.LENGTH_LONG).show(); 
    } 

    } 

這這裏的適配器可以使片段來回報每類認爲這是不允許它的值。

package com.TIPA.uips; 

import com.TIPA.uips.NewsFeed; 
import com.TIPA.uips.Chat; 
import com.TIPA.uips.FriendsList; 
import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentManager; 
import android.support.v4.app.FragmentPagerAdapter; 

public class TabsPagerAdapter extends FragmentPagerAdapter { 

    public TabsPagerAdapter(FragmentManager fm) { 
     super(fm); 
    } 

    @Override 
    public Fragment getItem(int index) { 

     switch (index) { 
     case 0: 
      // Top Rated fragment activity 
      return new NewsFeed(); 
     case 1: 
      // Games fragment activity 
      return new Chat(); 
     case 2: 
      // Movies fragment activity 
      return new FriendsList(); 
     } 

     return null; 
    } 

    @Override 
    public int getCount() { 
     // get item count - equal to number of tabs 
     return 3; 
    } 

} 

乾杯

UPDATE:

與ID /列表XML實現的列表視圖時

新的錯誤發生的歷史。

03-06 02:47:59.780: D/dalvikvm(858): Not late-enabling CheckJNI (already on) 
03-06 02:48:02.290: D/dalvikvm(858): GC_FOR_ALLOC freed 95K, 6% free 3117K/3284K, paused 52ms, total 54ms 
03-06 02:48:02.510: D/dalvikvm(858): GC_FOR_ALLOC freed 19K, 5% free 3143K/3284K, paused 31ms, total 32ms 
03-06 02:48:02.510: I/dalvikvm-heap(858): Grow heap (frag case) to 3.815MB for 709972-byte allocation 
03-06 02:48:02.550: D/dalvikvm(858): GC_FOR_ALLOC freed <1K, 4% free 3836K/3980K, paused 29ms, total 29ms 
03-06 02:48:02.640: D/(858): HostConnection::get() New Host Connection established 0xb74f2a38, tid 858 
03-06 02:48:02.750: W/EGL_emulation(858): eglSurfaceAttrib not implemented 
03-06 02:48:02.760: D/OpenGLRenderer(858): Enabling debug mode 0 
03-06 02:48:07.920: D/AndroidRuntime(858): Shutting down VM 
03-06 02:48:07.920: W/dalvikvm(858): threadid=1: thread exiting with uncaught exception (group=0xb4a74ba8) 
03-06 02:48:07.940: E/AndroidRuntime(858): FATAL EXCEPTION: main 
03-06 02:48:07.940: E/AndroidRuntime(858): Process: com.TIPA.uips, PID: 858 
03-06 02:48:07.940: E/AndroidRuntime(858): java.lang.RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list' 
03-06 02:48:07.940: E/AndroidRuntime(858): at android.support.v4.app.ListFragment.ensureList(ListFragment.java:344) 
03-06 02:48:07.940: E/AndroidRuntime(858): at android.support.v4.app.ListFragment.onViewCreated(ListFragment.java:145) 
03-06 02:48:07.940: E/AndroidRuntime(858): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:941) 
03-06 02:48:07.940: E/AndroidRuntime(858): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1104) 
03-06 02:48:07.940: E/AndroidRuntime(858): at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682) 
03-06 02:48:07.940: E/AndroidRuntime(858): at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1467) 
03-06 02:48:07.940: E/AndroidRuntime(858): at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:472) 
03-06 02:48:07.940: E/AndroidRuntime(858): at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:141) 
03-06 02:48:07.940: E/AndroidRuntime(858): at android.support.v4.view.ViewPager.populate(ViewPager.java:1068) 
03-06 02:48:07.940: E/AndroidRuntime(858): at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:550) 
03-06 02:48:07.940: E/AndroidRuntime(858): at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:509) 
03-06 02:48:07.940: E/AndroidRuntime(858): at android.support.v4.view.ViewPager.setCurrentItem(ViewPager.java:490) 
03-06 02:48:07.940: E/AndroidRuntime(858): at com.TIPA.uips.MainActivity.onTabSelected(MainActivity.java:71) 
03-06 02:48:07.940: E/AndroidRuntime(858): at com.android.internal.app.ActionBarImpl.selectTab(ActionBarImpl.java:577) 
03-06 02:48:07.940: E/AndroidRuntime(858): at com.android.internal.app.ActionBarImpl$TabImpl.select(ActionBarImpl.java:1105) 
03-06 02:48:07.940: E/AndroidRuntime(858): at com.android.internal.widget.ScrollingTabContainerView$TabClickListener.onClick(ScrollingTabContainerView.java:547) 
03-06 02:48:07.940: E/AndroidRuntime(858): at android.view.View.performClick(View.java:4438) 
03-06 02:48:07.940: E/AndroidRuntime(858): at android.view.View$PerformClick.run(View.java:18422) 
03-06 02:48:07.940: E/AndroidRuntime(858): at android.os.Handler.handleCallback(Handler.java:733) 
03-06 02:48:07.940: E/AndroidRuntime(858): at android.os.Handler.dispatchMessage(Handler.java:95) 
03-06 02:48:07.940: E/AndroidRuntime(858): at android.os.Looper.loop(Looper.java:136) 
03-06 02:48:07.940: E/AndroidRuntime(858): at android.app.ActivityThread.main(ActivityThread.java:5017) 
03-06 02:48:07.940: E/AndroidRuntime(858): at java.lang.reflect.Method.invokeNative(Native Method) 
03-06 02:48:07.940: E/AndroidRuntime(858): at java.lang.reflect.Method.invoke(Method.java:515) 
03-06 02:48:07.940: E/AndroidRuntime(858): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 
03-06 02:48:07.940: E/AndroidRuntime(858): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 
03-06 02:48:07.940: E/AndroidRuntime(858): at dalvik.system.NativeStart.main(Native Method) 
03-06 02:48:09.880: I/Process(858): Sending signal. PID: 858 SIG: 9 

Friends_list.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 
    <ListView 
     android:id="@+id/list" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" > 
    </ListView> 

</LinearLayout> 
+0

問題是在你的xml..u需要給列表視圖的id作爲@android:id/list「 –

回答

3

你需要有如下ID列表視圖中friends_list.xml

<ListView android:id="@android:id/list" 

無論適用於ListActivity適用於ListFragment。更多信息@

引用文檔

ListActivity擁有一個由在屏幕中心的單一, 全屏幕列表的默認佈局。但是,如果您願意,您可以通過在onCreate()中使用setContentView()設置您自己的視圖佈局 來自定義屏幕布局。要做到這一點,你自己的視圖必須 包含id爲一個ListView對象「@android:ID /列表」(或列表,如果 它的代碼)

所以,如果你在ListFragment充氣佈局需要在片段佈局中有ListView,編號爲@android:id/list

編輯:

通知android:id="@+id/list" VS android:id="@android:id/list"。我建議android:id="@android:id/list"

+0

嗨謝謝你的迴應我做了exaclty,現在即時通訊選擇第二個tab,添加到我的xml中的listview是id/list這裏是錯誤我把錯誤放在主線程 – vyrix09

+0

@ vyrix09什麼是344是ListFragment? – Raghunandan

+0

@ vyrix09和post'friends_list.xml' – Raghunandan

相關問題