Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/198.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在android中设置片段中的应用程序上下文?_Android_List_Fragment - Fatal编程技术网

如何在android中设置片段中的应用程序上下文?

如何在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

我有一个ActionBar,它有两个选项卡,每个选项卡布局都是一个片段。在其中一个选项卡中,有一个listView。我想为它设置ArrayAdapter。但当我运行应用程序时,出现了错误,错误与我的应用程序上下文有关。我的代码是:

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();