2016-12-21 3 views
0

Ich versuche, eine neue separate Klasse mit 4 Eigenschaften zu erstellen, um ein Protokoll über verschiedene Ereignisse zu erstellen, die in meiner Aufgabe ein neues Objekt erstellt und verschiedene Werte zuweist. So kann ich es leichter sortieren, da ich verschiedene Informationen in separaten Variablen im Objekt gespeichert habe.Wie übergebe ich eine Zeichenfolge an eine andere Funktion

aber ich erhält eine

unkown Klasse aLog.idaLog.statusaLog.actionaLog.time

und

Methode Anruf bei Log(); erwartet

was habe ich falsch gemacht?

public class UpdatePro extends AsyncTask<String, String, String> { 

    String z = ""; 
    Boolean isSuccess = false; 


    String DBcard = cardnumberbox.getText().toString(); 
    String DBshelf = shelfnumberbox.getText().toString(); 



    @Override 
    protected void onPreExecute() { 
     LStatus aLog = LStatus(); 
     aLog.id=""; 
     aLog.status=""; 
     aLog.action=""; 
     aLog.time=""; 
    } 

    @Override 
    protected void onPostExecute(String r) { 
     Toast.makeText(CameraActivity.this, r, Toast.LENGTH_SHORT).show(); 
     if (isSuccess == true) { 

     } 

    } 

    @Override 
    protected String doInBackground(String... params) { 

     if (DBcard.trim().equals("") || DBshelf.trim().equals("")) 
      z = getString(R.string.Invalid_Credentials); 
     else { 
      try { 
       Connection con = connectionClass.CONN(); 
       if (con == null) { 
        z = getString(R.string.Forbindelses_fejl); 
       } else { 
        String itemcard = DBcard; 
        { 
         if (itemcard.substring(0, 1).startsWith("K")) { 
          itemcard = itemcard.substring(1); 
         } else { 
          itemcard = itemcard;//.substring(0)); 
         } 
        } 
        String itemshelf = DBshelf; 
        { 
         if (itemshelf.substring(0, 1).startsWith("R")) { 
          itemshelf = "" + itemshelf.substring(1); 
         } else { 
          itemshelf = "" + itemshelf;//.substring(0)); 
         } 
        } 
        String doerTicket; 
        doerTicket = setingPreferences.getString("doerTicket", ""); 
        String sql = 
          "SET NOCOUNT ON; " + 
            "DECLARE @upd INT; " + 
            "EXEC [file].[usp_assignPartToShelf] " + 
            "@p_ItemNumber=?, " + 
            "@p_ShelfNumber=?, " + 
            "@[email protected] OUTPUT, " + 
            "@p_DoerTicket=?;" + 
            "SELECT @upd AS UpdatedItems;"; 
        try (PreparedStatement s = con.prepareStatement(sql)) { 
         s.setString(1, itemcard); 
         s.setString(2, itemshelf); 
         s.setString(3, doerTicket); 
         ResultSet rs = s.executeQuery(); // above T-SQL always returns at least one ResultSet 
         rs.next(); 
         if (s.getMoreResults()) { 
          System.out.printf(
            "INFO:%n" + 
              " A second ResultSet was found.%n" + 
              " The previous ResultSet was returned by the stored procedure.%n" + 
              " Getting next ResultSet ...%n", 
            ""); 
          rs = s.getResultSet(); 
          rs.next(); 
          System.out.println(rs.getString(1)); 
          if (rs.getString(1).equals("0")) { 
           z = getString(R.string.Update_succes); 
           isSuccess = true; 
          } 

         } 
         PreparedStatement preparedStatement = null; 
         String sqli = "select ID,ItemNumber,Trashed,Sold from [file].[Item] where [ItemNumber] =?"; 
         preparedStatement = con.prepareStatement(sqli); 
         preparedStatement.setString(1, itemcard); 
         ResultSet rsS = preparedStatement.executeQuery(); 
         while (rsS.next()) { 
          String P_id = rsS.getString("ID"); 
          String Trashed = rsS.getString("Trashed"); 
          String Sold = rsS.getString("Sold"); 

          if(Trashed.equals("1.000000")) { 
           //for updating trash 
           CallableStatement cs = null; 
           String queryundo = "{ call [file].[usp_trashItem](?,?,?,?)} "; 
           cs = con.prepareCall(queryundo); 
           cs.setString(1, P_id); // p_ID 
           cs.setString(2, "U"); //p_Action(U for untrash T for Trash) 
           cs.setInt(3, 1); //p_Quantity 
           cs.setString(4, doerTicket); //p_DoerTicket 
           cs.executeUpdate(); 
           z = getString(R.string.untrashed); 
          } 
          else if (Sold.equals("1.000000")) 
          { 
           z = getString(R.string.item_sold); 

          } 
         } 
         con.close(); 
         rs.close(); 
         rsS.close(); 
        } 
       } 
      } catch (Exception ex) { 
       isSuccess = false; 
       z = getString(R.string.Exceptions) + "L2)"; 
       Log.e("MYAPP", "exception", ex); 
      } 
     } 
     return z; 
    } 
} 

meine Klasse

package ominidata.ominidata; 

import java.util.Date; 
public class LStatus { 
public String id; 
public String action; 
public String status; 
public Date time;  
    public void setId(String id) { 
     this.id = id; 
    } 

    public String getId() { 
     return id; 
    } 

    public void setAction(String action) { 
     this.action = action; 
    } 

    public String getAction() { 
     return action; 
    } 

    public void setStatus(String status) { 
     this.status = status; 
    } 

    public String getStatus() { 
     return status; 
    } 

    public void setTime(Date time) { 
     this.time = time; 
    } 

    public Date getTime() { 
     return time; 
    } 
    } 

Antwort

1

Laufzeit-Polymorphismus ist hier nicht in Betracht, da ich nicht abgeleitetes Kind Ihrer LStatus Klasse sehen. Verschieben Sie die Objekterstellung im Konstruktor oder in der preExecute-Methode von AsyncTask.

Verwenden Sie den folgenden Code erstellen Objekt

LStatus aLog = LStatus(); 

auch den Umfang Ihrer Variablen öffentlich aktualisieren.

public class LStatus { 
public String id; 
public String action; 
public String status; 
public Date time; 
+0

, die nicht –

+0

updatet mit der ganzen Klasse gearbeitet hat, so dass es vielleicht eine bessere Übersicht gibt –

+0

Können Sie Ihre aktualisierten Code schreiben – Rahul

Verwandte Themen