Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/189.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片段静态方法不显示listview项_Android_Listview_Android Fragments - Fatal编程技术网

Android片段静态方法不显示listview项

Android片段静态方法不显示listview项,android,listview,android-fragments,Android,Listview,Android Fragments,我以前发布过这个问题。但没有得到任何建议,这就是我再次发布它的原因。我有一个片段可以在listview中显示itms。因此,我有(我的部分代码): 公共类TwoFragment扩展了片段{ 按钮btn1; 静态列表视图列表视图; 进程对话框; 静态活动; 公共双片段(){ } @凌驾 创建时的公共void(Bundle savedInstanceState){ super.onCreate(savedInstanceState); } @凌驾 CreateView上的公共视图(布局、充气机、视图

我以前发布过这个问题。但没有得到任何建议,这就是我再次发布它的原因。我有一个片段可以在listview中显示itms。因此,我有(我的部分代码):

公共类TwoFragment扩展了片段{
按钮btn1;
静态列表视图列表视图;
进程对话框;
静态活动;
公共双片段(){
}
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
}
@凌驾
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态){
视图=充气机。充气(R.layout.fragment_two2,容器,错误);
activity=getActivity();
listview=(listview)view.findViewById(R.id.listview);
返回视图;
}
公共静态无效显示(最终字符串serverResponse){
@抑制警告(“未使用”)
最终类DownloadJSON扩展异步任务{
私有JSONObject JSONObject;
私人JSONArray JSONArray;
私有ListViewAdapter;
私有ArrayList ArrayList;
@凌驾
受保护的Void doInBackground(字符串…参数){
试一试{
jsonarray=新的jsonarray(serverResponse);
Gson Gson=新的Gson();
User[]User=gson.fromJson(jsonarray.toString(),User[].class);
for(int i=0;i

在这段代码中,我没有在listview中得到任何显示。

您持有的是对活动和listview的静态引用吗?这是一个很好的例子

从display方法以及activity和listview变量中删除static关键字。实际上,您不需要对活动的引用,因为您可以在“onPostExecute”中使用“getActivity”获取实例。但前提是片段仍然附加到活动

您还定义了AsyncTask,但没有使用[instance].execute()调用它


现在我看了一下代码,它甚至可以编译吗?据我所知,不允许在方法中定义类。

将适配器代码和从何处调用此方法。?在何处调用“display”方法??我正在使用tablayout..so.display方法将从mainActivity自动调用..我无法从display()中删除静态关键字方法。实际上,这个方法会在按下按钮后调用。。我还没有发布的代码。。MainAcitvity是否设置了片段?如果是,那么它应该能够引用它的实例,因此即使它不是静态的,也能够调用该方法;setAdapter(适配器);这两行,logcat怎么说?从后台线程非法访问UI?java.lang.NullPointerException onPostExecute(TwoFragment.java:137)、onPostExecute(TwoFragment.java:1)…即适配器=新的ListViewAdapter(活动,arraylist);setAdapter(适配器);
public class TwoFragment extends Fragment  {

    Button btn1;
    static ListView listview;
    ProgressDialog mProgressDialog;
    static Activity activity;

    public TwoFragment() {

    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

        View view = inflater.inflate(R.layout.fragment_two2, container, false);
         activity = getActivity();
        listview = (ListView) view.findViewById(R.id.listview);
        return view;
    }

    public static void display(final String serverResponse) {

        @SuppressWarnings("unused")
        final class DownloadJSON extends AsyncTask<String, String, Void> {
            private  JSONObject jsonobject;
            private  JSONArray jsonarray;
                private  ListViewAdapter adapter;
            private  ArrayList<HashMap<String, String>> arraylist;
            @Override
            protected Void doInBackground(String... params) {
                try {

                    jsonarray = new JSONArray(serverResponse);
                    Gson gson = new Gson();

                    User[] user = gson.fromJson(jsonarray.toString(), User[].class);
                    for (int i = 0; i < user.length; i++) {
                        HashMap<String, String> map = new HashMap<String, String>();
                        map.put("name", user[i].getFullname());
                        arraylist.add(map);

                    }

                } catch (JSONException e) {
                    Log.e("Error", e.getMessage());
                    e.printStackTrace();
                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                return null;
            }

            @Override
            protected void onPostExecute(Void args) {

                adapter = new ListViewAdapter(activity, arraylist);
                listview.setAdapter(adapter);
                adapter.notifyDataSetChanged();
            }
        }
    }
}