2016-05-09 1 views
0

Мне нужна помощь в моей функции добавления в Android Fragment. Я понятия не имею, где я ошибся ... Извините за мои ограниченные знания Java ...Добавить продукт (запись) Не работает на Android Fragment

Когда я нажимаю кнопку «Отправить», ничего не происходит ... Я думаю, что-то не так, начиная с метода onResponse. .

Эти функции предполагают добавить запись, в которой у меня есть ключ, в котором указаны имя, цена, & описаний в базе данных, и если запись будет успешно добавлена, она будет предупреждать пользователя «Продукт успешно добавлен», иначе он будет информировать пользователь не смог добавить запись.

Код хорошо работает на странице активности (я копирую код из своей учетной записи в учетной записи), но не работаю, когда перехожу на страницу фрагмента.

Это AddFragment.java

package ezms.ezms; 


import android.app.AlertDialog; 
import android.content.DialogInterface; 
import android.content.Intent; 
import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.Toast; 

import com.android.volley.RequestQueue; 
import com.android.volley.Response; 
import com.android.volley.toolbox.Volley; 

import org.json.JSONException; 
import org.json.JSONObject; 

/** 
* A simple {@link Fragment} subclass. 
*/ 
public class AddFragment extends Fragment { 


    public AddFragment() { 
     // Required empty public constructor 
    } 

    EditText pName, pPrice, pDesc; 
    Button btn_addProduct; 

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

     View view = inflater.inflate(R.layout.fragment_add, container, false); 

     pName = (EditText) view.findViewById(R.id.pName); 
     pPrice = (EditText) view.findViewById(R.id.pPrice); 
     pDesc = (EditText) view.findViewById(R.id.pDesc); 
     btn_addProduct = (Button) view.findViewById(R.id.btn_addProduct); 

     btn_addProduct.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

       final String name = pName.getText().toString(); 
       final String price = pPrice.getText().toString(); 
       final String desc = pDesc.getText().toString(); 

       Response.Listener<String> responseListener = new Response.Listener<String>() { 
        @Override 
        public void onResponse(String response) { 
         try { 
          JSONObject jsonResponse = new JSONObject(response); 
          boolean success = jsonResponse.getBoolean("success"); 
          if (success) { 
           AlertDialog.Builder myAlertDialog = new AlertDialog.Builder(AddFragment.this.getActivity()); 
           myAlertDialog.setMessage("New Product Successfully Added."); 
           myAlertDialog.setPositiveButton("GOT IT", new DialogInterface.OnClickListener() { 
             public void onClick(DialogInterface arg0, int arg1) { 
              Toast.makeText(AddFragment.this.getActivity(), "New Product Successfully Added.", Toast.LENGTH_SHORT).show(); 
             } 
           }); 
           myAlertDialog.show(); 

          } else { 
           AlertDialog.Builder builder = new AlertDialog.Builder(AddFragment.this.getActivity()); 
           builder.setMessage("Failed to Add Product.") 
             .setNegativeButton("RETRY", null) 
             .create() 
             .show(); 
          } 
         } catch (JSONException e) { 
          e.printStackTrace(); 
         } 
        } 
       }; 

       AddProductRequest AddProductRequest = new AddProductRequest(name, price, desc, responseListener); 
       RequestQueue queue = Volley.newRequestQueue(AddFragment.this.getActivity()); 
       queue.add(AddProductRequest); 
      } 
     }); 

     return view; 
    } 
} 

Это AddProductRequest.java

package ezms.ezms; 

import com.android.volley.Response; 
import com.android.volley.toolbox.StringRequest; 

import java.util.HashMap; 
import java.util.Map; 

public class AddProductRequest extends StringRequest { 
    private static final String ADD_REQUEST_URL = "http://www.pohqw.com/projects/myapp/add_product.php"; 
    private Map<String, String> params; 

    // Constructor of this class 
    public AddProductRequest(String name, String price, String desc, Response.Listener<String> listener) { 
     super(Method.POST, ADD_REQUEST_URL, listener, null); 
     params = new HashMap<>(); 
     params.put("name", name); 
     params.put("price", price); 
     params.put("desc", desc); 
    } 

    @Override 
    public Map<String, String> getParams() { 
     return params; 
    } 
} 

Это сообщение об ошибке отображается в моем Android Studio ..

05-09 13:12:47.004 10674-12581/? I/System.out: [CDS]rx timeout:1 
05-09 13:12:47.004 10674-12581/? I/System.out: [CDS]rx timeout:2500 
05-09 13:12:47.004 10674-12581/? I/System.out: Close in OkHttp:0 
05-09 13:12:47.004 10674-12581/? I/System.out: [CDS]close[38156] 
05-09 13:12:47.004 10674-12581/? D/libc-netbsd: [getaddrinfo]: hostname=www.pohqw.com; servname=(null); cache_mode=(null), netid=0; mark=0 
05-09 13:12:47.005 10674-12581/? D/libc-netbsd: [getaddrinfo]: ai_addrlen=0; ai_canonname=(null); ai_flags=4; ai_family=0 
05-09 13:12:47.005 10674-12581/? D/libc-netbsd: [getaddrinfo]: hostname=www.pohqw.com; servname=(null); cache_mode=(null), netid=0; mark=0 
05-09 13:12:47.005 10674-12581/? D/libc-netbsd: [getaddrinfo]: ai_addrlen=0; ai_canonname=(null); ai_flags=1024; ai_family=0 
05-09 13:12:47.007 10674-12581/? D/libc-netbsd: getaddrinfo: www.pohqw.com get result from proxy >> 
05-09 13:12:47.007 10674-12581/? I/System.out: propertyValue:true 
05-09 13:12:47.008 10674-12581/? I/System.out: [CDS]rx timeout:2500 
05-09 13:12:47.009 10674-12581/? I/System.out: [socket][5] connection www.pohqw.com/202.75.56.237:80;LocalPort=58216(2500) 
05-09 13:12:47.009 10674-12581/? I/System.out: [CDS]connect[www.pohqw.com/202.75.56.237:80] tm:2 
05-09 13:12:47.010 10674-12581/? D/Posix: [Posix_connect Debug]Process ezms.ezms :80 
05-09 13:12:47.066 10674-12581/? I/System.out: [socket][/192.168.1.34:58216] connected 
05-09 13:12:47.067 10674-12581/? I/System.out: [OkHttp] sendRequest>> 
05-09 13:12:47.067 10674-12581/? I/System.out: [OkHttp] sendRequest<< 
05-09 13:12:47.385 10674-10674/? W/System.err: org.json.JSONException: Value <br of type java.lang.String cannot be converted to JSONObject 
05-09 13:12:47.385 10674-10674/? W/System.err:  at org.json.JSON.typeMismatch(JSON.java:111) 
05-09 13:12:47.385 10674-10674/? W/System.err:  at org.json.JSONObject.<init>(JSONObject.java:160) 
05-09 13:12:47.385 10674-10674/? W/System.err:  at org.json.JSONObject.<init>(JSONObject.java:173) 
05-09 13:12:47.385 10674-10674/? W/System.err:  at ezms.ezms.AddFragment$1$1.onResponse(AddFragment.java:59) 
05-09 13:12:47.385 10674-10674/? W/System.err:  at ezms.ezms.AddFragment$1$1.onResponse(AddFragment.java:55) 
05-09 13:12:47.385 10674-10674/? W/System.err:  at com.android.volley.toolbox.StringRequest.deliverResponse(StringRequest.java:60) 
05-09 13:12:47.385 10674-10674/? W/System.err:  at com.android.volley.toolbox.StringRequest.deliverResponse(StringRequest.java:30) 
05-09 13:12:47.385 10674-10674/? W/System.err:  at com.android.volley.ExecutorDelivery$ResponseDeliveryRunnable.run(ExecutorDelivery.java:99) 
05-09 13:12:47.385 10674-10674/? W/System.err:  at android.os.Handler.handleCallback(Handler.java:815) 
05-09 13:12:47.385 10674-10674/? W/System.err:  at android.os.Handler.dispatchMessage(Handler.java:104) 
05-09 13:12:47.385 10674-10674/? W/System.err:  at android.os.Looper.loop(Looper.java:194) 
05-09 13:12:47.385 10674-10674/? W/System.err:  at android.app.ActivityThread.main(ActivityThread.java:5546) 
05-09 13:12:47.385 10674-10674/? W/System.err:  at java.lang.reflect.Method.invoke(Native Method) 
05-09 13:12:47.385 10674-10674/? W/System.err:  at java.lang.reflect.Method.invoke(Method.java:372) 
05-09 13:12:47.385 10674-10674/? W/System.err:  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:964) 
05-09 13:12:47.385 10674-10674/? W/System.err:  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:759) 
+0

может у объяснить больше о том, что не работает? –

+0

Я думаю, что что-то случилось неправильно, начиная с метода onResponse ... Когда я нажимаю кнопку, чтобы отправить мою запись, ничего не произошло, предположим, чтобы предупредить пользователя о том, была ли запись успешно добавлена ​​или нет ... – Poh

+0

Вы получаете ошибку при LogCat? – Pooya

ответ

-1

Попробуйте заменить линия

RequestQueue queue = Volley.newRequestQueue(AddFragment.this.getActivity()); 

с

RequestQueue queue = Volley.newRequestQueue(getActivity().getApplicationContext()); 
+1

Что хорошего дает предоставление другого Контекста? –

+0

ничего не случилось ... – Poh

0

Видимо, когда я попробовал ваш POST URL, я получил это:

Предупреждение: mysqli_stmt_bind_param() ожидает параметр 1, чтобы быть mysqli_stmt, булево приведены в/главная/pohqw /public_html/projects/myapp/add_product.php на линии 9

Предупреждение: mysqli_stmt_execute() ожидает параметр 1 будет mysqli_stmt, логическое значение, данное в /home/pohqw/public_html/projects/myapp/add_product.php на линии 10 { «Успех»: истинный}

Кажется, ваше предупреждение выкинут вместе с вашим {"success":true}

Смежные вопросы