android从活动到片段

时间:2014-10-18 15:24:35

标签: android json parsing listview android-fragments

我是android的新手。当我将代码粘贴到片段中时,我想将其中一个活动放在我的应用程序的一个标签下(标签是片段),这里有很多错误......

新JSONParse()中出现错误.execute();它显示JSONParse类型不可见。

在这一行私有类JSONParse扩展AsyncTask有错误 显示JSONParse.only类的非法修饰符,允许使用public,abstract和final。

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

所有变量phonenumber,peoplenumber,remarks,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();
    }


 }
}

3 个答案:

答案 0 :(得分:0)

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

        }
    }

}

答案 1 :(得分:0)

如果您使用上下文作为TabActivityQueue.this(或getApplicationCOntext())更改为getActivity()。

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

答案 2 :(得分:0)

private Activity activity声明为public Activity activity;