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

Unable to pass a value from one class to another in android

提问人:Siva 提问时间:2/3/2014 最后编辑:PhantômaxxSiva 更新时间:2/3/2014 访问量:69

问:

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

该值是在类中选取的,但是在另一个类中检索它时,我得到 null。

下面是设置该值的类。

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(){


}

请帮我解决这个问题

Android 按值传递

评论

0赞 Raghunandan 2/3/2014
数据库在哪里初始化?
0赞 Siva 2/3/2014
我只粘贴了一半的代码,我的意思是只有给我带来问题的代码。它是在另一个类中初始化的,但这里的问题是 getentry 在股票表类中为 null

答:

1赞 Raghunandan 2/3/2014 #1

你有

public class stockmanager extends Activity{

并且您正在实例化一个活动类

stockmanager sm=new stockmanager().

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

你可以做

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

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

public ContentValues insert(params){

评论

0赞 Siva 2/3/2014
哦,谢谢 raghunandan 的回复。.所以你能给出什么是最好的方法来做到这一点,因为我在股票表类中需要。getentry
0赞 Siva 2/3/2014
好的,我们最好将参数传递给方法。.谢谢,让我试试这种方式
0赞 Raghunandan 2/3/2014
@Siva这样做有什么问题呢?
0赞 Siva 2/3/2014
实际上,我是 java 和 android 学习的新手。当我在解释中做时,我在变量中得到空。getentry
1赞 Raghunandan 2/3/2014
@Siva绝对确定 instating activity 类是错误的。stackoverflow.com/questions/14956018/......
1赞 michal.luszczuk 2/3/2014 #2

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

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

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

评论

0赞 Siva 2/3/2014
如何传递活动..我是 android 新手
0赞 michal.luszczuk 2/3/2014
我已经展示了构造函数的示例。只需像这样使用这个构造函数:StockTable st=new StockTable(this);