【问题标题】:Unable to pass a value from one class to another in android无法在android中将值从一个类传递给另一个类
【发布时间】:2014-02-26 02:01:36
【问题描述】:

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

该值是在一个类中选取的,但是在另一个类中检索它时,我得到了 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,但我得到了 null。

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


}

请帮我解决这个问题

【问题讨论】:

  • db在哪里初始化?
  • 我只粘贴了一半的代码,我的意思是只有那些给我带来问题的代码。它在另一个类中初始化,但这里的问题是 getentry 在库存表类中为空

标签: android pass-by-value


【解决方案1】:

你有

public class stockmanager extends Activity{

你正在实例化一个活动类

stockmanager sm=new stockmanager()

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

你可以这样做

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

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

public ContentValues insert(params){

【讨论】:

  • 哦,谢谢 raghunandan 的回复。所以你能告诉我什么是最好的方法,因为我需要 getentry 在股票表类中。
  • 好的,我们将参数作为参数传递给方法。谢谢让我尝试这种方式
  • @Siva 这样做有什么问题?
  • 实际上,我对 java 和 android 都是新手。当我在解释时,我在 getentry 变量中得到空值。
  • @Siva 绝对确定启动活动类是错误的。 stackoverflow.com/questions/14956018/…
【解决方案2】:

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

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

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

【讨论】:

  • 如何传递活动..我是android新手
  • 我已经展示了构造函数的例子。只需使用此构造函数:StockTable st=new StockTable(this);
猜你喜欢
  • 2018-02-05
  • 1970-01-01
  • 1970-01-01
  • 2014-02-24
  • 2021-04-21
  • 2011-08-26
  • 2012-01-11
相关资源
最近更新 更多