0

誰でも私を助けることができます..?? 私の問題は、json からの応答を取得した後 [レコードを取得するクエリを選択するという点で、Web サービスからのもの]、リストビューに表示する代わりに、前の画面に戻るということです。

public class MainActivity5 extends ListActivity {

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.custom_list_view);

        Intent i = getIntent();
        phNumber = i.getStringExtra("phn_no");

        new SearchCustomer().execute();

        ListAdapter adapter = new SimpleAdapter(this, customerList, R.layout.activity_main5, new String[] { TAG_F_NAME, TAG_C_PHONE }, new int[] { R.id.TextViewName, R.id.TextViewPhone });
        setListAdapter(adapter);

    }

    class SearchCustomer extends AsyncTask<String, String, String> {

        private boolean successFlag;

        @Override
        protected void onPreExecute() {

            super.onPreExecute();
            pDialog = new ProgressDialog(MainActivity5.this);
            pDialog.setMessage("Searching Customer..");
            pDialog.setIndeterminate(false);
            pDialog.setCancelable(true);
            pDialog.show();
        }

        protected String doInBackground(String... args) {

            String inputPhnNoText = phNumber;

            List<NameValuePair> params = new ArrayList<NameValuePair>();
            params.add(new BasicNameValuePair("phno", inputPhnNoText));
            JSONObject json = jsonParser.makeHttpRequest(url_search_customer, "POST", params);
            Log.d("Search Response", json.toString());

            try {
                int success = json.getInt(TAG_SUCCESS);
                if (success == 1) {
                    successFlag = true;
                    result = json.getJSONArray(TAG_RESULT);
                    for (int i = 0; i < result.length(); i++) {
                        JSONObject c = result.getJSONObject(i);
                        String id = c.getString(TAG_ID);
                        String fname = c.getString(TAG_F_NAME);
                        String phoneNumber = c.getString(TAG_C_PHONE);

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

                        // adding each child node to HashMap key => value
                        map.put(TAG_ID, id);
                        map.put(TAG_F_NAME, fname);
                        map.put(TAG_C_PHONE, phoneNumber);
                        // adding HashList to ArrayList
                        customerList.add(map);
                    }
                }
                else {
                    successFlag = false;
                }
            }
            catch (JSONException e) {
                Log.e("log_tag", "Error parsing data " + e.toString());
            }
            return null;
        }

        protected void onPostExecute(String file_url) {

            pDialog.dismiss();
            finish();
        }
    }
}

これは私のアクティビティファイルコードです.doinbackground customerListで私は欲しいものと正確なデータを取得しましたが、問題はそれがcustom_list_view画面にとどまらず、テキストボックスと検索ボタンがある前の画面に戻ることです..できない記録を見せて…

誰もがこのばかげたことに解決策を与えることができますか?

4

4 に答える 4

2
  1. finish() に関して CapDroid に同意します。実行しないでください。

  2. create adapter と set adapter inside を呼び出さないでください。onCreate()代わりに、内部で行うことができますonPostExecute()

  3. あなたは2つのオーバーヘッドを行っています.それらをしないでください.

例えば:

 for (int i = 0; i < result.length(); i++) {
                        JSONObject c = result.getJSONObject(i);
                        String id = c.getString(TAG_ID);
                        String fname = c.getString(TAG_F_NAME);
                        String phoneNumber = c.getString(TAG_C_PHONE);

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

                        // adding each child node to HashMap key => value
                        map.put(TAG_ID, id);
                        map.put(TAG_F_NAME, fname);
                        map.put(TAG_C_PHONE, phoneNumber);
                        // adding HashList to ArrayList
                        customerList.add(map);
                    }

この種のオーバーヘッドを行う必要はありません。代わりに、拡張することでカスタム アダプターを作成できるため、ArrayAdapter<JSONObject>準備する必要はなくHashMap、代わりに直接追加できJSONObjectます。

于 2012-10-29T07:34:06.750 に答える
1

finish()コードで onPostExecute から削除するだけです。

protected void onPostExecute(String file_url) {

        pDialog.dismiss();
ListAdapter adapter = new SimpleAdapter(this, customerList, R.layout.activity_main5, new String[] { TAG_F_NAME, TAG_C_PHONE }, new int[] { R.id.TextViewName, R.id.TextViewPhone });
        setListAdapter(adapter);


    }
于 2012-10-29T07:13:27.360 に答える
1

君の

終了()

メソッドはアクティビティを閉じるので、これを削除してください。

于 2012-10-29T07:17:33.710 に答える
0

onPostExecute()メソッドでアクティビティを終了しないでください。

于 2012-10-29T07:15:57.920 に答える