没有上下文的ArrayAdapter Android

时间:2013-03-16 22:22:16

标签: android android-arrayadapter

我想在我的课程中实施ArrayAdapterFragment而不是Activity

问题是在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)

3 个答案:

答案 0 :(得分:7)

  

现在我应该怎么做第一个参数

getActivity()会返回Activity,它将作为您ArrayAdapter构造函数的第一个参数。 Activity继承自Context

  

我试图在第一个参数中传递“getActivity()。getApplicationContext()”,但代码崩溃了

除非您知道 为什么 正在呼叫getApplicationContext(),否则请不要致电getApplicationContext()

答案 1 :(得分:0)

得到了答案。 问题在于通过id找到视图。

getActivity()findViewById();

我使用了View变量并对布局进行了充气,​​并使用该View查找视图。

查看v = inflater.inflate(............) listView listView = v.findViewById(param);

有效。

Thanx对于帮助人员。

答案 2 :(得分:0)

我尝试了下面的一个,它的工作完美

     // 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;
}