Java 如何在静态类中使用findviewbyid?
我有一个静态类:Java 如何在静态类中使用findviewbyid?,java,Java,我有一个静态类: public static void culculateFprice(){ TextView FinalBuy = (TextView) findViewById(R.id.buyText); int Pprice = MainActivity.pepperoni.getFinalPrice(); int Cprice = MainActivity.calzone.getFinalPrice(); int QCprice = MainActivi
public static void culculateFprice(){
TextView FinalBuy = (TextView) findViewById(R.id.buyText);
int Pprice = MainActivity.pepperoni.getFinalPrice();
int Cprice = MainActivity.calzone.getFinalPrice();
int QCprice = MainActivity.quattrostagioni.getFinalPrice();
int QFprice = MainActivity.quattroformaggi.getFinalPrice();
int Mprice = MainActivity.mexican.getFinalPrice();
int FinalPrice = Pprice + Cprice + QCprice + QFprice + Mprice;
FinalBuy.setText("Стоимось вашего заказа: " + FinalPrice + " руб.");
}
如何在此类中使用find findViewById?
我从这个方法中调用这个方法
publicstaticvoidonplus(inti){
ArrayList=listok();
开关(list.get(i)){
...
}
refreshData(listokadd());
culleffrice();
}
并且有问题“非静态方法”findViewById(int)“无法从静态上下文引用”我假设此函数存在于您的
活动
类中,并且您希望基于视图处理一些信息。有两种方法可以解决此问题:
移除静态修改器,让实例处理这个问题李>
创建一个字段,该字段包含设置布局后立即创建的视图
引用
因此,您的活动
将保留该字段:
class MyActivity extends Activity {
static View FinalBuy; // needs to be static, otherwise would give same error
}
但是,要从潜在的运行时错误中保存代码,请在静态方法中使用if…else
块:
public static void culculateFprice(){
if(FinalBuy != null) {
// your code here.
}
}
这个问题是基本Java,而不是Android。这就是Java语言为程序提供实例与静态方法的设计方式
此静态视图
声明会导致潜在的设计缺陷,因为此视图
将比活动寿命长。相反,您应该考虑使用列表中建议的方法作为选项1,并了解为什么您无法在程序中使用实例方法。你应该多读一点
这可能需要您将MainActivity
的其他字段更改为非静态 这回答了你的问题吗?不,我有一个问题,b=不在onCreat中,我在静态类中有问题“非静态方法”findViewById(int)“无法从静态上下文引用”请回答您的问题并更好地描述您的问题。首先,您说您有一个静态类,但只显示一个静态方法。然后你说你得到了一个NullPointException(你是说NullPointerException?准确点!),然后你说这是一个编译器错误(“非静态方法…”)。下定决心!A会有很大帮助。没有人知道什么是findViewById
。另见。完成后,我重写问题。现在检查一下。
public static void culculateFprice(){
if(FinalBuy != null) {
// your code here.
}
}