在我的应用程序中,我需要一个从一个 Activity 到另一个 Activity 的变量,而不使用任何 Intent 。所以我将该变量声明为静态变量并用作 FirstActivity.a
但它返回的是空值,因此我创建了一个扩展应用程序的类并在那里声明了该变量我仍然得到空值。不知道如何实现这一目标。
Google 搜索了很多,但每个人都建议使用静态或扩展 Application 类,不幸的是,这两种方法都不适合我。
应用类:
public class ApplicationClass extends Application{
private String StockName;
public String getStockName() {
return StockName;
}
public void setStockName(String stockName) {
StockName = stockName;
}
}
将一个 Activity 中的变量设置为:
public class Detail extends Activity{
ApplicationClass ac;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.stockdetail);
ac=new ApplicationClass();
ac.setStockName(getIntent().getExtras().getString("StockName"));
}
在另一个类中检索变量:
public class Table {
Context c1;
Cursor c;
ApplicationClass ac=new ApplicationClass();
public String selectdate="Select " + column1 + " as _id, " + column2 + " From " + tablename + " Where " + column3 + " = "
+ ac.getStockName();
我不确定如何实现这一目标。
编辑
public class Detail extends Activity{
public static sname;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.stockdetail);
sname=getIntent().getExtras().getString("StockName");
}
public class Table {
Context c1;
Cursor c;
public String selectdate="Select " + column1 + " as _id, " + column2 + " From " + tablename + " Where " + column3 + " = "
+ Detail.sname;
最佳答案
您应该在您的 list 中定义您的子类应用程序类。而且你永远不应该调用“new ApplicationClass()”。您可以使用 Activity 的 getApplication() 方法获取对 ApplicationClass 实例的引用。
详细信息.java:
public class Detail extends Activity{
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.stockdetail);
ApplicationClass app = (ApplicationClass)getApplication();
app.setStockName("blah");
}
}
表格.java
public class Table {
public String selectDate;
public Table(Activity a)
{
ApplicationClass ac=(ApplicationClass)a.getApplication();
selectdate="Select " + column1 + " as _id, " + column2 + " From " + tablename + " Where " + column3 + " = "
+ ac.getStockName();
}
实例化Table.java
public NewActivity extends Activity{
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Table t = new Table(this);
}
}
关于android - 访问另一个类中 Activity 中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22759644/