2011-03-20 37 views
0

我面對一個FC當我試圖訪問包含我所有的保存DATAS(在文件中)列表視圖,這裏是logcat的:這是什麼logcat日誌意味着什麼?

03-20 22:43:33.686: ERROR/AndroidRuntime(5315): FATAL EXCEPTION: main 
03-20 22:43:33.686: ERROR/AndroidRuntime(5315): java.lang.NullPointerException 
03-20 22:43:33.686: ERROR/AndroidRuntime(5315):  at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:355) 
03-20 22:43:33.686: ERROR/AndroidRuntime(5315):  at android.widget.ArrayAdapter.getView(ArrayAdapter.java:323) 
03-20 22:43:33.686: ERROR/AndroidRuntime(5315):  at android.widget.AbsListView.obtainView(AbsListView.java:1430) 
03-20 22:43:33.686: ERROR/AndroidRuntime(5315):  at android.widget.ListView.makeAndAddView(ListView.java:1745) 
03-20 22:43:33.686: ERROR/AndroidRuntime(5315):  at android.widget.ListView.fillDown(ListView.java:670) 
03-20 22:43:33.686: ERROR/AndroidRuntime(5315):  at android.widget.ListView.fillFromTop(ListView.java:727) 
03-20 22:43:33.686: ERROR/AndroidRuntime(5315):  at android.widget.ListView.layoutChildren(ListView.java:1598) 
03-20 22:43:33.686: ERROR/AndroidRuntime(5315):  at android.widget.AbsListView.onLayout(AbsListView.java:1260) 
03-20 22:43:33.686: ERROR/AndroidRuntime(5315):  at android.view.View.layout(View.java:7175) 
03-20 22:43:33.686: ERROR/AndroidRuntime(5315):  at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1254) 
03-20 22:43:33.686: ERROR/AndroidRuntime(5315):  at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1130) 
03-20 22:43:33.686: ERROR/AndroidRuntime(5315):  at android.widget.LinearLayout.onLayout(LinearLayout.java:1047) 
03-20 22:43:33.686: ERROR/AndroidRuntime(5315):  at android.view.View.layout(View.java:7175) 
03-20 22:43:33.686: ERROR/AndroidRuntime(5315):  at android.widget.FrameLayout.onLayout(FrameLayout.java:338) 
03-20 22:43:33.686: ERROR/AndroidRuntime(5315):  at android.view.View.layout(View.java:7175) 
03-20 22:43:33.686: ERROR/AndroidRuntime(5315):  at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1254) 
03-20 22:43:33.686: ERROR/AndroidRuntime(5315):  at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1130) 
03-20 22:43:33.686: ERROR/AndroidRuntime(5315):  at android.widget.LinearLayout.onLayout(LinearLayout.java:1047) 
03-20 22:43:33.686: ERROR/AndroidRuntime(5315):  at android.view.View.layout(View.java:7175) 
03-20 22:43:33.686: ERROR/AndroidRuntime(5315):  at android.widget.FrameLayout.onLayout(FrameLayout.java:338) 
03-20 22:43:33.686: ERROR/AndroidRuntime(5315):  at android.view.View.layout(View.java:7175) 
03-20 22:43:33.686: ERROR/AndroidRuntime(5315):  at android.view.ViewRoot.performTraversals(ViewRoot.java:1140) 
03-20 22:43:33.686: ERROR/AndroidRuntime(5315):  at android.view.ViewRoot.handleMessage(ViewRoot.java:1859) 
03-20 22:43:33.686: ERROR/AndroidRuntime(5315):  at android.os.Handler.dispatchMessage(Handler.java:99) 
03-20 22:43:33.686: ERROR/AndroidRuntime(5315):  at android.os.Looper.loop(Looper.java:123) 
03-20 22:43:33.686: ERROR/AndroidRuntime(5315):  at android.app.ActivityThread.main(ActivityThread.java:3683) 
03-20 22:43:33.686: ERROR/AndroidRuntime(5315):  at java.lang.reflect.Method.invokeNative(Native Method) 
03-20 22:43:33.686: ERROR/AndroidRuntime(5315):  at java.lang.reflect.Method.invoke(Method.java:507) 
03-20 22:43:33.686: ERROR/AndroidRuntime(5315):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
03-20 22:43:33.686: ERROR/AndroidRuntime(5315):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
03-20 22:43:33.686: ERROR/AndroidRuntime(5315):  at dalvik.system.NativeStart.main(Native Method) 

list_item.xml:

<?xml version="1.0" encoding="utf-8"?> 

<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:padding="10dp" 
    android:textSize="13sp" > 
</TextView> 

histo.xml:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:layout_width="fill_parent" 
    android:layout_height="fill_parent" android:layout_weight="1" 
    android:id="@+id/ViewHisto"> 
    <ListView android:id="@+id/lv" android:layout_width="fill_parent" 
     android:layout_height="fill_parent" android:layout_weight="1" /> 
</LinearLayout> 

功能訪問到ListView:

public void updatelv(Activity activity) { 
     SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context); 
     String fileName = getResources().getString(R.string.fileName); 
     fileDir = "" + preferences.getString("login", "") + "."+ preferences.getString("marque", "") + "."; 
     s = myIO.ReadFilePerLine(getApplicationContext(), fileDir+fileName); 
      updatelv(this); 
     ListView L = (ListView) findViewById(R.id.lv); 
     L.setAdapter(new ArrayAdapter<String>(this, R.layout.list_item, s)); 
     } 

的onCreate FUNC:

public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.histo); 
     context = getApplicationContext(); 
     activity = this; 
     final SharedPreferences preferences = PreferenceManager 
       .getDefaultSharedPreferences(context); 
     String fileName = getResources().getString(R.string.fileName); 
     fileDir = "" + preferences.getString("login", "") + "."+ preferences.getString("marque", "") + "."; 
     s = myIO.ReadFilePerLine(getApplicationContext(), fileDir + fileName); 
     updatelv(this); 
     ListView L = (ListView) findViewById(R.id.lv); 
     L.setTextFilterEnabled(true); 
......... 

這是什麼確切含義?這是XML問題嗎? 謝謝:)。

+0

可能是。您用於列表項目的佈局是什麼? – 2011-03-20 23:27:29

+0

@Robby Pond:請看我的第一篇文章:)。 – androniennn 2011-03-20 23:32:07

回答

1

您的TextView缺少一個ID。你需要給它一個ID喜歡

android:id="@+id/text"

和創建像

L.setAdapter(new ArrayAdapter<String>(this, R.id.text, s)); 

一個ArrayAdapter這ArrayAdapter構造預計資源是一個TextView的ID,而不是佈局。所以你當前的代碼,在ArrayAdapter是做這樣的事情

TextView tv = (TextView) findViewById(R.layout.list_item); 

和電視爲空,因爲它不是一個佈局。

+0

剛剛完成了你告訴我要做的=> FC!請參閱我的「updatelv」函數,是真的嗎? s是一個受保護的String []! – androniennn 2011-03-20 23:46:31

+0

磅:我在textview中添加了一個id,並且像你告訴我的那樣編輯了L.setAdapter!是什麼我錯過:(:\? – androniennn 2011-03-20 23:52:46

+0

你在哪裏打電話updatelv? – 2011-03-21 00:00:38

0

您可以在android源代碼here中查找相應的行。

,如果您正在爲一個不同的版本,它可能會有所不同,但對於2.3.3這意味着它的返回嘗試設置相應的TextView的文本時,NPE:

354 } else { 
355 text.setText(item.toString()); 
356 } 

可能是XML相關雖然AFAIK唯一的錯誤是在編譯時標記的。 ListView有效後,你已經充氣,並在ArrayAdapter嘗試編輯它之前?

+0

是的,事實上,當我嘗試啓動顯示所有存儲的數據的活動時,就會顯示錯誤:\!我製作了一個受保護的String [] s;變量爲s = myIO.ReadFilePerLine(getApplicationContext(),fileDir + fileName); – androniennn 2011-03-20 23:42:19

0

我有相同的錯誤,在我的情況下,ArrayAdapter需要創建列表的對象數組未正確填充。所以當Android試圖用數組中的數據填充ListView並且數組中的一個對象爲空時,拋出異常。 所以確保你傳遞給ArrayAdapter的「s」被正確創建,並且不包含任何「損壞的」數據。