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

Posted

技术标签:

【中文标题】无法在android中将值从一个类传递给另一个类【英文标题】:Unable to pass a value from one class to another in 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 在库存表类中为空 【参考方案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 绝对确定启动活动类是错误的。 ***.com/questions/14956018/…【参考方案2】:

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

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

public StockTable(stockmanager yourActivity)

 this.st = yourActivity;

【讨论】:

如何传递活动..我是android新手 我已经展示了构造函数的例子。只需使用此构造函数:StockTable st=new StockTable(this);

以上是关于无法在android中将值从一个类传递给另一个类的主要内容,如果未能解决你的问题,请参考以下文章

Flutter:如何将值从 streamprovider / listview builder 传递给另一个类

如何将变量从一个类传递给另一个?

在 Asp.net MVC 中将值从视图传递到控制器

在android中将值从一个窗口传递到另一个窗口

如何在 QWebEngineView 中将值从 QML 传递到 JavaScript

QT中两个类之间如何进行值传递?如何一个类里面定义了一个数组a[270],怎么传递给另一个类?