无法在android中将值从一个类传递到另一个类

时间:2014-02-02 16:18:01

标签: android pass-by-value

我遇到了一个问题:一个值没有从一个类转移到另一个类。

该值在类中被选取,但是当在另一个类中检索它时,我将变为空。

以下是设置值的类。

public class stockmanager extends Activity{

    String getentry=null;
    Database d=new Database(this);
    StockTable st=new StockTable();


    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.stockmanager);

    final Button AddStock=(Button) findViewById(R.id.button1);
        final EditText entry=(EditText) findViewById(R.id.editText1);
        final Button BroDetail=(Button) findViewById(R.id.button2);

        AddStock.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                getentry=entry.getText().toString();
                d.db.insert(st.tablename, null,st.insert());


            }
        });
                }
}

在这个课程中,我使用了值getentry,但我得到了空。

public class StockTable {

final String tablename="StockTable";
private String column1="Stock_ID";
private String column2="StockName";

stockmanager sm=new stockmanager();

final String stocktable = "CREATE TABLE " + tablename + 
            " (" + column1+ " INTEGER PRIMARY KEY , " + column2 + " TEXT) ";

public ContentValues insert(){

    ContentValues cvi=new ContentValues();
    for(int i=0;i<=sm.getentry.length();i++)
    {
        cvi.put(column1, 1);
        cvi.put(column2,sm.getentry);
                    }

    return cvi;
}

public void delete(){


}

请帮我解决这个问题

2 个答案:

答案 0 :(得分:1)

你有

public class stockmanager extends Activity{

您正在实例化一个活动类

stockmanager sm=new stockmanager()

您不应该实例化活动类。这是错误的。相反,您可以将值传递给方法本身或传递给其他类的构造函数。

你可以这样做

StockTable st=new StockTable();
st.insert(your params);

然后在StockTable中有一个采用参数的插入方法

public ContentValues insert(params){

答案 1 :(得分:1)

我不知道你想做什么。但StockTable中的构造函数new stockmanager()不会触发onCreate()方法。

您需要将Activity传递给StockTable类,如:

public StockTable(stockmanager yourActivity)
{
 this.st = yourActivity;
}