Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在静态类中使用findviewbyid?_Java - Fatal编程技术网

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.
        }
    }