【问题标题】:How to pass a string to another function如何将字符串传递给另一个函数
【发布时间】:2016-12-21 18:34:54
【问题描述】:

我尝试创建一个具有 4 个属性的新的单独类来记录不同的事件,这在我的任务中创建一个新对象并分配不同的值。所以我可以更轻松地对其进行排序,因为我在对象的不同变量中存储了不同的信息。

但我得到了一个

未知类aLog.idaLog.statusaLog.actionaLog.time

方法调用预计在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=?, " +
                                    "@p_UpdatedItems=@upd 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;
    }
   }

【问题讨论】:

    标签: java android class logging


    【解决方案1】:

    运行时多态在这里不符合条件,因为我看不到您的 LStatus 类的任何派生子。 在构造函数或 AsyncTask 的 preExecute 方法中移动对象创建。

    使用下面的代码创建对象

    LStatus aLog = LStatus();
    

    还将变量的范围更新为公开。

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

    【讨论】:

    • 全班更新,这样可能会提供更好的概览
    • 这不是问题
    • 它修复了一些问题 excpet time is incompatible type reuqire util date found lang string and = LStatus();预期方法调用
    • 我还没弄明白
    猜你喜欢
    • 2021-12-12
    • 2021-02-03
    • 1970-01-01
    • 2020-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多