2016-06-20 13 views
0

Arbeits Ich möchte den Spinner Wert php passieren und einige Ergebnis und zeigt in meine Textview zu bekommen. Wenn ich Toast verwende, um den Selected-Wert anzuzeigen, funktioniert es perfekt. Aber während ich den Wert an die php-Datei übergebe, werde ich getroffen. Ich habe es versucht. kann einige mein Problem beheben.Beim Senden Spinner Wert auf PHP-Datei erstmals seine nur

Java-Datei:

public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     getSupportActionBar().hide(); //<< this for hide title bar 
     setContentView(R.layout.sales_order); 

    fg.setOnItemSelectedListener(
        new AdapterView.OnItemSelectedListener() { 
         public void onItemSelected(
           AdapterView<?> parent, View view, int position, long id) { 
          if(goods_name1.getSelectedItem() !=null && goods_name1.getSelectedItem() !=""){ 
           // WebServer Request URL 
           String serverURL = "http://IP/fs/getProductOneStock.php"; 
           // Use AsyncTask execute Method To Prevent ANR Problem 
           new LongOperation().execute(serverURL); 
          } 
         } 

         public void onNothingSelected(AdapterView<?> parent) { 
          showToast("Spinner1: unselected"); 
         } 
        }); 
} 

// Class with extends AsyncTask class 
    private class LongOperation extends AsyncTask<String, Void, Void> { 

     // Required initialization 
     private final HttpClient Client = new DefaultHttpClient(); 
     private String Content; 
     private String Error = null; 
     private ProgressDialog Dialog = new ProgressDialog(Sales_Order.this); 
     String data =""; 
     int sizeData = 0; 
     TextView pro_stock1 = (TextView)findViewById(R.id.tv_stock1); 
     Spinner fgStock = (Spinner)findViewById(R.id.spinner1); 

     protected void onPreExecute() { 
      // NOTE: You can call UI Element here. 
      //Start Progress Dialog (Message) 

      Dialog.setMessage("Please wait.."); 
      Dialog.show(); 

      try{ 
       // Set Request parameter 
       data +="&" + URLEncoder.encode("data", "UTF-8") + "="+fgStock.getSelectedItem(); 

      } catch (UnsupportedEncodingException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
     } 

     // Call after onPreExecute method 
     protected Void doInBackground(String... urls) { 
      /************ Make Post Call To Web Server ***********/ 
      BufferedReader reader=null; 
      // Send data 
      try 
      { 
       // Defined URL where to send data 
       URL url = new URL(urls[0]); 
       // Send POST data request 
       URLConnection conn = url.openConnection(); 
       conn.setDoOutput(true); 
       OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream()); 
       wr.write(data); 
       wr.flush(); 
       // Get the server response 
       reader = new BufferedReader(new InputStreamReader(conn.getInputStream())); 
       StringBuilder sb = new StringBuilder(); 
       String line = null; 
       // Read Server Response 
       while((line = reader.readLine()) != null) 
       { 
        // Append server response in string 
        sb.append(line + ""); 
       } 
       // Append Server Response To Content String 
       Content = sb.toString(); 
      } 
      catch(Exception ex) 
      { 
       Error = ex.getMessage(); 
      } 
      finally 
      { 
       try 
       { 
        reader.close(); 
       } 
       catch(Exception ex) {} 
      } 
      return null; 
     } 

     protected void onPostExecute(Void unused) { 
      // NOTE: You can call UI Element here. 

      // Close progress dialog 
      Dialog.dismiss(); 

      if (Error != null) { 

       pro_stock1.setText("Output : "+Error); 

      } else { 

       // Show Response Json On Screen (activity) 
       pro_stock1.setText(Content); 

       /****************** Start Parse Response JSON Data *************/ 

       String OutputData = ""; 
       JSONObject jsonResponse; 

       try { 

        /****** Creates a new JSONObject with name/value mappings from the JSON string. ********/ 
        jsonResponse = new JSONObject(Content); 

        /***** Returns the value mapped by name if it exists and is a JSONArray. ***/ 
        /******* Returns null otherwise. *******/ 
        JSONArray jsonMainNode = jsonResponse.optJSONArray("Finish_goods_mas"); 

        /*********** Process each JSON Node ************/ 

        int lengthJsonArr = jsonMainNode.length(); 

        for(int i=0; i < lengthJsonArr; i++) 
        { 
         /****** Get Object for each JSON node.***********/ 
         JSONObject jsonChildNode = jsonMainNode.getJSONObject(i); 

         /******* Fetch node values **********/ 
         String Stock1 = jsonChildNode.optString("Finish_goods_mas").toString(); 
         OutputData += Stock1; 


        } 
        /****************** End Parse Response JSON Data *************/ 

        //Show Parsed Output on screen (activity) 
        //jsonParsed.setText(OutputData); 

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

    } 

meine PHP-Datei

<?php 
require "db_config.php"; 
$Goods_name=$_POST['Goods_name']; 
$sql = "select goods_min_level from Finish_goods_mas where Goods_name='".$Goods_name."'"; 
$stmt = sqlsrv_query($conn, $sql); 
if($stmt === false) { 
    die(print_r(sqlsrv_errors(), true)); 
} 

while($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) { 
     //echo $row['cus_id']."<br />"; 
     $json['Finish_goods_mas'][]=$row; 
} 

sqlsrv_free_stmt($stmt); 

echo json_encode($json); 
?> 

nach Änderungen von doInBackground machen und onPreExecute() der Spinner Wert auf PHP-Datei passiert nicht auch bekomme ich nicht Ergebnis von php zurück

+0

Durch 'ShowProStock' Methode, da UI-Elemente Aktualisierung von 'doInBackground' –

+0

wie kann ich – Karthi

+0

ShowProStock() auszuführen ist Methode verwenden, um die JSON von Server zu erhalten – Karthi

Antwort

0

Wenn eine asynchrone Aufgabe ausgeführt wird, geht die Aufgabe, über 4 Stufen:

1.onPreExecute(), wird im UI-Thread aufgerufen, bevor die Task ausgeführt wird. Dieser Schritt wird normalerweise zum Einrichten der Aufgabe verwendet, z. B. durch Anzeigen einer Fortschrittsleiste in der Benutzeroberfläche.

2.doInBackground (Param ...), auf dem Hintergrund-Thread aufgerufen unmittelbar nach OnPreExecute() beendet die Ausführung. Dieser Schritt wird verwendet, um eine Hintergrundberechnung durchzuführen, die sehr lange dauern kann. Die Parameter der asynchronen Task werden an diesen Schritt übergeben. Das Ergebnis der Berechnung muss von diesem Schritt zurückgegeben werden und wird an den letzten Schritt zurückgegeben. Dieser Schritt kann auch publishProgress (Progress ...) verwenden, um eine oder mehrere Fortschrittseinheiten zu veröffentlichen. Diese Werte werden im Schritt onProgressUpdate (Progress ...) im UI-Thread veröffentlicht.

3.onProgressUpdate (Progress ...), auf dem UI-Thread aufgerufen, nachdem ein Aufruf publishProgress (Progress ...). Der Zeitpunkt der Ausführung ist nicht definiert. Diese Methode wird verwendet, um jede Art von Fortschritt in der Benutzerschnittstelle anzuzeigen, während die Hintergrundberechnung noch ausgeführt wird. Zum Beispiel kann damit eine Fortschrittsleiste animiert oder Protokolle in einem Textfeld angezeigt werden. 4.onPostExecute (Result), wird auf dem UI-Thread aufgerufen, nachdem die Hintergrundberechnung abgeschlossen ist. Das Ergebnis der Hintergrundberechnung wird diesem Schritt als Parameter übergeben.

so textView.setText(strOrderNo); tun es in OnPostExecute (Ergebnis) Überschreibung Methode

+0

okay, ich werde versuchen, – Karthi

+0

Ich folgte Ihrem Weg, um meinen Code zu aktualisieren @Gazi Rimon – Karthi

+0

ok ....... es hat funktioniert? –