【问题标题】:android from activity to fragmentandroid从活动到片段
【发布时间】:2014-10-18 15:24:34
【问题描述】:

我是安卓新手。当我将代码粘贴到片段中时,我想将其中一项活动放在我的应用程序的一个选项卡下(该选项卡是片段),有很多错误......

new JSONParse().execute() 中有错误;说明 JSONParse 类型不可见。

在这一行 private class JSONParse extends AsyncTask 有错误 显示 JSONParse 类的非法修饰符。仅允许 public、abstract 和 final。

这一行 pDialog = new ProgressDialog(TabActivityQueue.this);它显示构造函数 progressDialog 未定义。

所有的变量 phonenumber, peoplenumber , comments, status, table2, url 都没有被解析为变量。

我应该改变什么?我真的被困住了。

这是活动代码:

public class MainActivity extends Activity {
ListView list;
TextView number;
TextView info;
TextView remark;
TextView statuss;
Button Btngetdata;
ArrayList<HashMap<String, String>> oslist = new ArrayList<HashMap<String, String>>();

//URL to get JSON Array
private static String url = "http://172.22.85.235:8080/Qproject/servlet/Qaction?action_flag=find";

//JSON Node Names 
private static final String Table2 = "table2";
private static final String phonenumber = "phonenumber";
private static final String peoplenumber = "peoplenumber";
private static final String remarks = "remarks";
private static final String status = "status";

JSONArray table2 = null;




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

    setContentView(R.layout.activity_main);
    oslist = new ArrayList<HashMap<String, String>>();



    Btngetdata = (Button)findViewById(R.id.getdata);
    Btngetdata.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {
             new JSONParse().execute();


        }
    });


}



private class JSONParse extends AsyncTask<String, String, JSONObject> {
     private ProgressDialog pDialog;
    @Override
    protected void onPreExecute() {
        super.onPreExecute();
         number = (TextView)findViewById(R.id.number);
         info = (TextView)findViewById(R.id.info);
         remark = (TextView)findViewById(R.id.remark);
         statuss = (TextView)findViewById(R.id.statuss);
        pDialog = new ProgressDialog(MainActivity.this);
        pDialog.setMessage("Getting Data ...");
        pDialog.setIndeterminate(false);
        pDialog.setCancelable(true);
        pDialog.show();



    }

    @Override
    protected JSONObject doInBackground(String... args) {

        JSONParser jParser = new JSONParser();

        // Getting JSON from URL
        JSONObject json = jParser.getJSONFromUrl(url);
        return json;
    }
     @Override
     protected void onPostExecute(JSONObject json) {
         pDialog.dismiss();
         try {
                // Getting JSON Array from URL
                table2 = json.getJSONArray(Table2);
                for(int i = 0; i < table2.length(); i++){
                JSONObject c = table2.getJSONObject(i);

                // Storing  JSON item in a Variable
                String number = c.getString(phonenumber);
                String info = c.getString(peoplenumber);
                String remark = c.getString(remarks);
                String statuss = c.getString(status);




                // Adding value HashMap key => value


                HashMap<String, String> map = new HashMap<String, String>();

                map.put(phonenumber, number);
                map.put(peoplenumber, info);
                map.put(remarks, remark);
                map.put(status, statuss);

                oslist.add(map);
                list=(ListView)findViewById(R.id.list);





                ListAdapter adapter = new SimpleAdapter(MainActivity.this, oslist,
                        R.layout.list_item,
                        new String[] { phonenumber,peoplenumber, remarks,status }, new int[] {
                                R.id.number,R.id.info, R.id.remark,R.id.statuss});

                list.setAdapter(adapter);
                list.setOnItemClickListener(new AdapterView.OnItemClickListener() {

                    @Override
                    public void onItemClick(AdapterView<?> parent, View view,
                                            int position, long id) {
                        Toast.makeText(MainActivity.this, "You Clicked at "+oslist.get(+position).get("name"), Toast.LENGTH_SHORT).show();

                    }
                });

                }
        } catch (JSONException e) {
            e.printStackTrace();
        }


     }
}

这是我在其中粘贴活动代码的片段:

public class TabActivityQueue extends Fragment {

ListView list;
TextView number;
TextView info;
TextView remark;
TextView statuss;
Button Btngetdata;
ArrayList<HashMap<String, String>> oslist = new ArrayList<HashMap<String, String>>();

//URL to get JSON Array
public static String url = "http://172.22.85.235:8080/Qproject/servlet/Qaction?action_flag=find";

//JSON Node Names 
public static final String Table2 = "table2";
public static final String phonenumber = "phonenumber";
public static final String peoplenumber = "peoplenumber";
public static final String remarks = "remarks";
public static final String status = "status";

JSONArray table2 = null;



 public View onCreateView(LayoutInflater inflater, ViewGroup container, 
            Bundle savedInstanceState) {
            // Inflate the layout for this fragment
            //This layout contains your list view 
                View view = inflater.inflate(R.layout.activity_tab_activity_queue, container, false);

                oslist = new ArrayList<HashMap<String, String>>();
                number = (TextView)view.findViewById(R.id.number);
             info = (TextView)view.findViewById(R.id.info);
             remark = (TextView)view.findViewById(R.id.remark);
             statuss = (TextView)view.findViewById(R.id.statuss);


                Btngetdata = (Button)view.findViewById(R.id.getdata);
                Btngetdata.setOnClickListener(new View.OnClickListener() {

                    @Override
                    public void onClick(View view) {
                         new JSONParse().execute();


                    }
                });

             return view;
        }
      }
private class JSONParse extends AsyncTask<String, String, JSONObject> {
 private ProgressDialog pDialog;
@Override
   protected void onPreExecute() {
   super.onPreExecute();

   pDialog = new ProgressDialog(TabActivityQueue.this);
   pDialog.setMessage("Getting Data ...");
   pDialog.setIndeterminate(false);
   pDialog.setCancelable(true);
   pDialog.show();



}

@Override
   protected JSONObject doInBackground(String... args) {

    JSONParser jParser = new JSONParser();

    // Getting JSON from URL
    JSONObject json = jParser.getJSONFromUrl(url);
    return json;
}
 @Override
protected void onPostExecute(JSONObject json) {
     pDialog.dismiss();
     try {
            // Getting JSON Array from URL
            table2 = json.getJSONArray(Table2);
            for(int i = 0; i < table2.length(); i++){
            JSONObject c = table2.getJSONObject(i);

            // Storing  JSON item in a Variable
            String number = c.getString(phonenumber);
            String info = c.getString(peoplenumber);
            String remark = c.getString(remarks);
            String statuss = c.getString(status);




            // Adding value HashMap key => value


            HashMap<String, String> map = new HashMap<String, String>();

            map.put(phonenumber, number);
            map.put(peoplenumber, info);
            map.put(remarks, remark);
            map.put(status, statuss);

            oslist.add(map);
            list=(ListView)findViewById(R.id.list);





            ListAdapter adapter = new SimpleAdapter(MainActivity.this, oslist,
                    R.layout.list_item,
                    new String[] { phonenumber,peoplenumber, remarks,status }, new int[] {
                            R.id.number,R.id.info, R.id.remark,R.id.statuss});

            list.setAdapter(adapter);
            list.setOnItemClickListener(new AdapterView.OnItemClickListener() {

                @Override
                public void onItemClick(AdapterView<?> parent, View view,
                                        int position, long id) {
                    Toast.makeText(MainActivity.this, "You Clicked at "+oslist.get(+position).get("name"), Toast.LENGTH_SHORT).show();

                }
            });

            }
    } catch (JSONException e) {
        e.printStackTrace();
    }


 }
}

【问题讨论】:

    标签: android json parsing listview android-fragments


    【解决方案1】:
        public class TabActivityQueue extends Fragment {
    
        ListView list;
        TextView number;
        TextView info;
        TextView remark;
        TextView statuss;
        Button Btngetdata;
        ArrayList<HashMap<String, String>> oslist = new ArrayList<HashMap<String, String>>();
    
        // URL to get JSON Array
        public static String url = "http://172.22.85.235:8080/Qproject/servlet/Qaction?action_flag=find";
    
        // JSON Node Names
        public static final String Table2 = "table2";
        public static final String phonenumber = "phonenumber";
        public static final String peoplenumber = "peoplenumber";
        public static final String remarks = "remarks";
        public static final String status = "status";
    
        JSONArray table2 = null;
    
        private Activity activity;
    
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
            // Inflate the layout for this fragment
            // This layout contains your list view
            View view = inflater.inflate(R.layout.activity_tab_activity_queue, container, false);
    
            oslist = new ArrayList<HashMap<String, String>>();
            number = (TextView) view.findViewById(R.id.number);
            info = (TextView) view.findViewById(R.id.info);
            remark = (TextView) view.findViewById(R.id.remark);
            statuss = (TextView) view.findViewById(R.id.statuss);
    
            Btngetdata = (Button) view.findViewById(R.id.getdata);
            Btngetdata.setOnClickListener(new View.OnClickListener() {
    
                @Override
                public void onClick(View view) {
                    new JSONParse().execute();
    
                }
            });
    
            activity = this.getActivity();
            return view;
        }
    
        private class JSONParse extends AsyncTask<String, String, JSONObject> {
            private ProgressDialog pDialog;
    
            @Override
            protected void onPreExecute() {
                super.onPreExecute();
    
                pDialog = new ProgressDialog(activity);
                pDialog.setMessage("Getting Data ...");
                pDialog.setIndeterminate(false);
                pDialog.setCancelable(true);
                pDialog.show();
    
            }
    
            @Override
            protected JSONObject doInBackground(String... args) {
    
                JSONParser jParser = new JSONParser();
    
                // Getting JSON from URL
                JSONObject json = jParser.getJSONFromUrl(url);
                return json;
            }
    
            @Override
            protected void onPostExecute(JSONObject json) {
                pDialog.dismiss();
                try {
                    // Getting JSON Array from URL
                    table2 = json.getJSONArray(Table2);
                    for (int i = 0; i < table2.length(); i++) {
                        JSONObject c = table2.getJSONObject(i);
    
                        // Storing JSON item in a Variable
                        String number = c.getString(phonenumber);
                        String info = c.getString(peoplenumber);
                        String remark = c.getString(remarks);
                        String statuss = c.getString(status);
    
                        // Adding value HashMap key => value
    
                        HashMap<String, String> map = new HashMap<String, String>();
    
                        map.put(phonenumber, number);
                        map.put(peoplenumber, info);
                        map.put(remarks, remark);
                        map.put(status, statuss);
    
                        oslist.add(map);
                        list = (ListView) findViewById(R.id.list);
    
                        ListAdapter adapter = new SimpleAdapter(activity, oslist, R.layout.list_item, new String[] {phonenumber, peoplenumber, remarks, status}, new int[] {R.id.number, R.id.info,
                                R.id.remark, R.id.statuss});
    
                        list.setAdapter(adapter);
                        list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    
                            @Override
                            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                                Toast.makeText(activity, "You Clicked at " + oslist.get(+position).get("name"), Toast.LENGTH_SHORT).show();
    
                            }
                        });
    
                    }
                } catch (JSONException e) {
                    e.printStackTrace();
                }
    
            }
        }
    
    }
    

    【讨论】:

      【解决方案2】:

      无论您在哪里使用上下文作为 TabActivityQueue.this(或 getApplicationCONtext())更改为 getActivity()。

      此外,如果某些 android 预定义的方法不起作用,请尝试使用 getActivity() 前缀,例如:- getActivity().method();

      【讨论】:

        【解决方案3】:

        private Activity activity 声明为public Activity activity;

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-09-20
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多