2016-12-21 7 views
0

Я пытаюсь создать новый отдельный класс с 4 свойствами, чтобы сделать журнал по различным событиям, который в моей Задаче создает новый объект и присваивает разные значения. поэтому я могу более легко отсортировать его, так как у меня есть другая информация, хранящаяся в отдельных переменных в объекте.Как передать строку другой функции

но получает

UNKOWN класс ожидаемый aLog.idaLog.statusaLog.actionaLog.time

и

Methode вызов на Log();

что я сделал неправильно?

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; 
    } 
} 

мой класс

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; 
    } 
    } 

ответ

1

Run Time полиморфизм не имеет права здесь, так как я не могу видеть производный ребенка вашего класса LStatus. Перемещение создания объекта в конструкторе или в методе preExecute AsyncTask.

Использование ниже код создания объекта

LStatus aLog = LStatus(); 

обновление также сферу ваших переменных для общественности.

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

, которые не работали –

+0

updatet со всем классом, так что, может быть, дает лучший обзор –

+0

Можете ли вы опубликовать свой обновленный код – Rahul

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