如何在android中设置片段中的应用程序上下文?
我有一个ActionBar,它有两个选项卡,每个选项卡布局都是一个片段。在其中一个选项卡中,有一个listView。我想为它设置ArrayAdapter。但当我运行应用程序时,出现了错误,错误与我的应用程序上下文有关。我的代码是:如何在android中设置片段中的应用程序上下文?,android,list,fragment,Android,List,Fragment,我有一个ActionBar,它有两个选项卡,每个选项卡布局都是一个片段。在其中一个选项卡中,有一个listView。我想为它设置ArrayAdapter。但当我运行应用程序时,出现了错误,错误与我的应用程序上下文有关。我的代码是: public class TarfandFrag extends Fragment { String values[] = new String[]{"sadeq","ali"}; ListView listView; Context context; @O
public class TarfandFrag extends Fragment {
String values[] = new String[]{"sadeq","ali"};
ListView listView;
Context context;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.tarfad_layout,container,false);
listView = (ListView) view.findViewById(R.id.list_tarfand);
return view;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ArrayAdapter adapter = new ArrayAdapter(context,android.R.layout.simple_list_item_1,values);
listView.setAdapter(adapter);
}
}
但它不起作用。注意,我不想使用listFragment或其他任何东西。我用getActivity()、context.getApplicationContext、getActivity.getApplicationContext替换上下文。但不起作用。plz help MEEEE在片段中,在onCreateView()之前调用onCreate()。这样做的结果是,在调用onCreate()时,ListView尚未与布局中的元素关联(正如您在稍后调用的onCreateView()中所做的那样),因此将解析为null,并且在为ListView设置适配器时,您将得到null指针异常。将适配器的代码设置移动到onCreateView()方法中,并使用getActivity()即可
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.tarfad_layout,container,false);
listView = (ListView) view.findViewById(R.id.list_tarfand);
// Here listview will not be null as it is now bound to an object
ArrayAdapter adapter = new ArrayAdapter(getActivity(),android.R.layout.simple_list_item_1,values);
listView.setAdapter(adapter);
return view;
}
将getActivity()
分配到onCreate
中的上下文
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
context=getActivity();
}
您没有设置您的上下文,因此它是空的(至少在您提供的代码上),您是否可以发布正确的代码,您提到使用getActivity(),您在哪里使用它我的问题解决了。从此处开始:resolve:Context=getActivity();