6

我想ArrayAdapter在我的类中实现一个Fragment不扩展的Activity

问题是ArrayAdapter的构造函数的第一个参数要传入什么。

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

现在我应该如何处理第一个参数?我试图通过

getActivity().getApplicationContext()

在第一个参数中,但代码崩溃了。

请帮帮我。

我的日志猫:

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)
4

3 回答 3

8

现在我应该如何处理第一个参数

getActivity()返回一个Activity,它可以很好地作为ArrayAdapter构造函数的第一个参数。Activity继承自Context

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

getApplicationContext()除非你确切地知道你为什么打电话,否则永远不要打电话getApplicationContext()

于 2013-03-16T22:25:20.907 回答
0

我尝试了以下一个并且它工作得很好

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

但在 Fragment * ArrayAdapter Class- context 类型是 Activity 而不是 Context context 的情况下,如下所示:

    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;
}
于 2014-03-13T13:05:39.520 回答
0

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

getActivity().findViewById();

我使用了一个 View 变量并扩大了布局,并使用该 View 来查找视图。

IE

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

有效。

谢谢大家的帮助。

于 2013-03-16T23:09:41.867 回答