2013-03-16 34 views
4

我想在我的類中實現ArrayAdapter,該類延伸Fragment而不是ActivityArrayAdapter沒有上下文的Android

問題是在ArrayAdapter的構造函數的第一個參數中傳遞什麼。

ArrayAdapter<String> myAdapter = new ArrayAdapter<String>(<what place here>,android.R.layout.simple_list_item1,anyarraylist); 

現在我該如何處理第一個參數?我試圖通過

getActivity().getApplicationContext() 

在第一個參數但代碼崩潰。

請幫我一把。

我的logcat:

03-17 03:33:08.029: E/AndroidRuntime(596): FATAL EXCEPTION: main 
03-17 03:33:08.029: E/AndroidRuntime(596): java.lang.NullPointerException 
03-17 03:33:08.029: E/AndroidRuntime(596): at com.search.pages.SearchResults.onCreateView(SearchResults.java:92) 
03-17 03:33:08.029: E/AndroidRuntime(596): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:871) 
03-17 03:33:08.029: E/AndroidRuntime(596): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1083) 
03-17 03:33:08.029: E/AndroidRuntime(596): at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:635) 
03-17 03:33:08.029: E/AndroidRuntime(596): at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1431) 
03-17 03:33:08.029: E/AndroidRuntime(596): at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:420) 
03-17 03:33:08.029: E/AndroidRuntime(596): at android.os.Handler.handleCallback(Handler.java:587) 
03-17 03:33:08.029: E/AndroidRuntime(596): at android.os.Handler.dispatchMessage(Handler.java:92) 
03-17 03:33:08.029: E/AndroidRuntime(596): at android.os.Looper.loop(Looper.java:123) 
03-17 03:33:08.029: E/AndroidRuntime(596): at android.app.ActivityThread.main(ActivityThread.java:4627) 
03-17 03:33:08.029: E/AndroidRuntime(596): at java.lang.reflect.Method.invokeNative(Native Method) 
03-17 03:33:08.029: E/AndroidRuntime(596): at java.lang.reflect.Method.invoke(Method.java:521) 
03-17 03:33:08.029: E/AndroidRuntime(596): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
03-17 03:33:08.029: E/AndroidRuntime(596): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
03-17 03:33:08.029: E/AndroidRuntime(596): at dalvik.system.NativeStart.main(Native Method) 
+0

作爲堆棧跟蹤指出,在'SearchResults'類的'onCreateView()'方法中'SearchResults.java'的第92行有'NullPointerException'。 – CommonsWare 2013-03-16 22:36:23

+0

thanx Sajmon用於編輯問題。 – 2013-03-16 23:15:32

回答

7

現在我應該怎麼做的第一個參數

getActivity()返回Activity,這將作爲你的第一個參數很好地工作,以您的ArrayAdapter構造。 Activity繼承自Context

我想傳遞的第一個參數 「getActivity()。getApplicationContext()」,但該代碼墜毀

,一定不要調用getApplicationContext()除非你知道正是爲什麼您呼叫getApplicationContext()

+0

但我也嘗試傳遞「getActivity()」,即使它崩潰。 其實,我想綁定一個listview到arrayadapter。 – 2013-03-16 22:32:53

+0

@SarimJavaidKhan:「但我也嘗試傳遞」getActivity()「,即使它崩潰了」 - 那麼你在其他地方有問題。查看LogCat中的堆棧跟蹤,找出你出錯的地方。 – CommonsWare 2013-03-16 22:35:29

+0

這是mycode的塊,我無法弄清楚它裏面是否有任何錯誤。 String [] values = new String [] {「Android」,「iPhone」,「WindowsMo​​bile」,「Blackberry」,「WebOS」,「Ubuntu」,「Windows7」,「Max OS X」 「OS/2」}; \t \t ArrayAdapter searchResultsArrayAdapter = new ArrayAdapter (getActivity(),android.R.layout.simple_list_item_1,values); ListView searchResultsListView =(ListView)getActivity()。findViewById(R.id.searchResultsListView); (搜索結果數組); – 2013-03-16 22:41:30

0

得到了答案。 問題在於通過id查找視圖。

getActivity()。findViewById();

我使用了一個視圖變量,並誇大了佈局,並使用該視圖來查找視圖。

視圖v = inflater.inflate(............) ListView中的ListView = v.findViewById(PARAM);

它工作。

Thanx幫助球員。

+0

http://stackoverflow.com/questions/6495898/findviewbyid-in-fragment-android 檢查此鏈接的詳細答案。 – 2013-03-16 23:16:35

1

我嘗試以下之一,其完美的工作

 // In getView 
    FragmentD f = new FragmentD(); 
    FragmentTransaction ft = context.getFragmentManager().beginTransaction(); 
    ft.replace(R.id.frame_container, f); 
    ft.commit(); 
* 

但萬一片段的 * ArrayAdapter講座上下文類型的活動沒有上下文的背景下像下面一個:

public class CListAdapter extends ArrayAdapter<List1> 
    { 
     private final Activity context; 

     private ArrayList<List1> conlist = null; 

     public CListAdapter(Activity context,ArrayList<ConnectorsList> connList) 
     { 
      super(context, R.layout.activity_listitem, connList); 
      System.out.println("Calling------"); 
      this.context = context; 
      this.conlist = connList; 
}