我想在我的课程中实施ArrayAdapter
,Fragment
而不是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)
答案 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;
}