示例代码用作活动但不作为片段

时间:2014-02-20 01:06:19

标签: android eclipse android-fragments android-activity

我是Android开发的新手。我还在学习和相处我可以在网上找到的示例代码。

我在尝试让这个示例代码在片段Activity中工作时遇到了一些麻烦,但是它作为一个Activity无缝地工作。我不知道我错过了什么。

Eclipse不断突出显示代码的不寻常部分,使其难以调试

任何帮助将不胜感激。

我会发布工作代码和有错误的代码:错误将是粗体文字

//工作代码

            package com.example.androidhive;

            import java.util.ArrayList;
            import java.util.List;
            import org.apache.http.NameValuePair;
            import org.apache.http.message.BasicNameValuePair;
            import org.json.JSONException;
            import org.json.JSONObject;
            import android.app.Activity;
            import android.app.ProgressDialog;
            import android.content.Intent;
            import android.os.AsyncTask;
            import android.os.Bundle;
            import android.util.Log;
            import android.view.View;
            import android.widget.Button;
            import android.widget.EditText;

            public class NewProductActivity extends Activity {

                // Progress Dialog
                private ProgressDialog pDialog;

                JSONParser jsonParser = new JSONParser();
                EditText inputName;
                EditText inputPrice;
                EditText inputDesc;

                // url to create new product
                private static String url_create_product = "http://10.0.2.2/android_connect/create_product.php";

                // JSON Node names
                private static final String TAG_SUCCESS = "success";

                @Override
                    public void onCreate(Bundle savedInstanceState) {
                    super.onCreate(savedInstanceState);
                    setContentView(R.layout.add_product);

                    // Edit Text
                    inputName = (EditText) findViewById(R.id.inputName);
                    inputPrice = (EditText) findViewById(R.id.inputPrice);
                    inputDesc = (EditText) findViewById(R.id.inputDesc);

                    // Create button
                    Button btnCreateProduct = (Button) findViewById(R.id.btnCreateProduct);

                    // button click event
                    btnCreateProduct.setOnClickListener(new View.OnClickListener() {

                        @Override
                        public void onClick(View view) {
                            // creating new product in background thread
                            new CreateNewProduct().execute();
                        }
                    });
                }

                /**
                 * Background Async Task to Create new product
                 * */
                class CreateNewProduct extends AsyncTask<String, String, String> {

                    /**
                     * Before starting background thread Show Progress Dialog
                     * */
                    @Override
                    protected void onPreExecute() {
                        super.onPreExecute();
                        pDialog = new ProgressDialog(NewProductActivity.this);
                        pDialog.setMessage("Creating Product..");
                        pDialog.setIndeterminate(false);
                        pDialog.setCancelable(true);
                        pDialog.show();
                    }

                    /**
                     * Creating product
                     * */
                    protected String doInBackground(String... args) {
                        String name = inputName.getText().toString();
                        String price = inputPrice.getText().toString();
                        String description = inputDesc.getText().toString();

                        // Building Parameters
                        List<NameValuePair> params = new ArrayList<NameValuePair>();
                        params.add(new BasicNameValuePair("name", name));
                        params.add(new BasicNameValuePair("price", price));
                        params.add(new BasicNameValuePair("description", description));

                        // getting JSON Object
                        // Note that create product url accepts POST method
                        JSONObject json = jsonParser.makeHttpRequest(url_create_product,
                                "POST", params);

                        // check log cat fro response
                        Log.d("Create Response", json.toString());

                        // check for success tag
                        try {
                            int success = json.getInt(TAG_SUCCESS);

                            if (success == 1) {
                                // successfully created product
                                Intent i = new Intent(getApplicationContext(), AllProductsActivity.class);
                                startActivity(i);

                                // closing this screen
                                finish();
                            } else {
                                // failed to create product
                            }
                        } catch (JSONException e) {
                            e.printStackTrace();
                        }

                        return null;
                    }

                    /**
                     * After completing background task Dismiss the progress dialog
                     * **/
                    protected void onPostExecute(String file_url) {
                        // dismiss the dialog once done
                        pDialog.dismiss();
                    }

                }
            }

//非工作代码,将其转换为片段

            package com.example.androidhive;

            import android.app.Fragment;
            import android.os.Bundle;
            import android.view.LayoutInflater;
            import android.view.View;
            import android.view.ViewGroup;
            import java.util.ArrayList;
            import java.util.List;
            import org.apache.http.NameValuePair;
            import org.apache.http.message.BasicNameValuePair;
            import org.json.JSONException;
            import org.json.JSONObject;
            import android.app.Activity;
            import android.app.ProgressDialog;
            import android.content.Intent;
            import android.os.AsyncTask;
            import android.os.Bundle;
            import android.util.Log;
            import android.view.View;
            import android.widget.Button;
            import android.widget.EditText;


            public class AddProductsFragment extends **Fragment** {

                public final int ARG_SECTION_NUMBER = 0;

                @Override
                public View onCreateView(LayoutInflater inflater, ViewGroup container,
                        Bundle savedInstanceState) {
                    View rootView = inflater.inflate(R.layout.add_product,
                            container, false);

                    return rootView;
                }

                // Progress Dialog
                private ProgressDialog pDialog;

                JSONParser jsonParser = new JSONParser();
                EditText inputName;
                EditText inputPrice;
                EditText inputDesc;

                // url to create new product
                private static String url_create_product = "http://10.0.2.2/android_connect/create_product.php";

                // JSON Node names
                private static final String TAG_SUCCESS = "success";

                @Override
                public void onCreate(Bundle savedInstanceState) {
                    super.onCreate(savedInstanceState);
                    **setContentView**(R.layout.add_product);

                    // Edit Text
                    inputName = (EditText) **findViewById**(R.id.inputName);
                    inputPrice = (EditText) **findViewById**(R.id.inputPrice);
                    inputDesc = (EditText) **findViewById**(R.id.inputDesc);

                    // Create button
                    Button btnCreateProduct = (Button) **findViewById**(R.id.btnCreateProduct);

                    // button click event
                    btnCreateProduct.setOnClickListener(new View.OnClickListener() {

                        @Override
                        public void onClick(View view) {
                            // creating new product in background thread
                            new CreateNewProduct().execute();
                        }
                    });
                }

                /**
                 * Background Async Task to Create new product
                 * */
                class CreateNewProduct extends AsyncTask<String, String, String> {

                    /**
                     * Before starting background thread Show Progress Dialog
                     * */
                    @Override
                    protected void onPreExecute() {
                        super.onPreExecute();
                        pDialog = new ProgressDialog(**AddProductFragment**.this);
                        pDialog.setMessage("Creating Product..");
                        pDialog.setIndeterminate(false);
                        pDialog.setCancelable(true);
                        pDialog.show();
                    }

                    /**
                     * Creating product
                     * */
                    protected String doInBackground(String... args) {
                        String name = inputName.getText().toString();
                        String price = inputPrice.getText().toString();
                        String description = inputDesc.getText().toString();

                        // Building Parameters
                        List<NameValuePair> params = new ArrayList<NameValuePair>();
                        params.add(new BasicNameValuePair("name", name));
                        params.add(new BasicNameValuePair("price", price));
                        params.add(new BasicNameValuePair("description", description));

                        // getting JSON Object
                        // Note that create product url accepts POST method
                        JSONObject json = jsonParser.makeHttpRequest(url_create_product,
                                "POST", params);

                        // check log cat fro response
                        Log.d("Create Response", json.toString());

                        // check for success tag
                        try {
                            int success = json.getInt(TAG_SUCCESS);

                            if (success == 1) {
                                // successfully created product
                                Intent i = new Intent(**getApplicationContext**(), AllProductsActivity.class);
                                startActivity(i);

                                // closing this screen
                                **finish**();
                            } else {
                                // failed to create product
                            }
                        } catch (JSONException e) {
                            e.printStackTrace();
                        }

                        return null;
                    }

                    /**
                     * After completing background task Dismiss the progress dialog
                     * **/
                    protected void onPostExecute(String file_url) {
                        // dismiss the dialog once done
                        pDialog.dismiss();
                    }

                }
            }

//我可能无法导入某些资产,事情是我不知道从哪里开始纠正这个。

再次感谢您的时间和帮助。

问候 EDEM

1 个答案:

答案 0 :(得分:0)

在片段中,您应该使用onCreateView()方法获取对视觉元素的引用,例如:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.add_product, container, false);
    inputName = (EditText) view.findViewById(R.id.inputName);
    return view;
}

如果您想在已经调用findViewById()后使用onCreateView()(片段生命周期的后期),则可以使用getView()方法:

inputName = (EditText) getView().findViewById(R.id.inputName);