Java 如何将变量从class1的静态函数传递到另一个class2?

Java 如何将变量从class1的静态函数传递到另一个class2?,java,android,Java,Android,我打算将函数的总权重传递给另一个类。我计划使用getIntent()。但是,静态函数不允许这样做。如果是这样,我应该如何通过?下面是class1的静态函数。我一直在“这个”部分出错 这是class 2函数 public class shopping1 extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

我打算将函数的总权重传递给另一个类。我计划使用getIntent()。但是,静态函数不允许这样做。如果是这样,我应该如何通过?下面是class1的静态函数。我一直在“这个”部分出错

这是class 2函数

public class shopping1 extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.shoppingcart);
    Intent intent = getIntent();
    String weight = intent.getStringExtra(Shopping.total_weights);
    System.out.println(weight);
    new connect5(this,   
  this.findViewById(android.R.id.content)).execute(weight);
}
}

引用对象的当前实例,不能在静态方法中使用它

由于静态方法不需要执行intance,因此应该将对象作为参数传递

public static double getShipping(Object this, double total_weight)
您需要将
Object
更改为您正在使用的类(活动、片段、上下文…)

完成后,您可以像这样调用静态方法

double weight = Shopping.getShipping(this, totalWeight);
范例

public static double getShipping(Context c, double total_weight) {
    String weight = Double.toString(total_weight);
    Intent intent = new Intent(c ,shopping1.class);
    intent.putExtra(total_weights, weight);
    c.startActivity(intent);
    double shipping_fee = 0;
    return shipping_fee;
}

Context
传递给静态方法。从那里,您可以以多种方式共享数据

1) 如果您的活动尚未启动,则可以使用
startActivity()
和Intent extras

2) 如果您的活动已开始,则可以使用


可以使用类名直接调用静态函数,您能告诉我如何调用吗?将其设为void函数并调用intent@cheongcharlenewat getShipping()方法的类名它必须是静态的,不能设为void,因为其他地方正在以“this”的形式访问此函数,我还可以使用什么?因为总权重值是从另一个将数据传递给它的类获取的。总重量+=重量*数量;shippingfee=购物。getShipping(总重量);。因此,在将上下文添加到getShipping函数后,我应该将代码更改为shippingfee=Shopping.getShipping(上下文c,totalweight)?因为当我将shippingfee=Shopping.getShipping(上下文c,totalweight)放入时,我得到了空指针异常错误看起来很简单,如果您想启动一项活动,则必须向您的函数传递
上下文。您不能传递
null
检查调用方法的位置…因为我不明白为什么像这样传递shippingfee=Shopping.getShipping(上下文c,totalweight)会得到null指针。因为我已经把数据放在了totalweight中,所以它应该已经读取了它。还是上下文c
public static double getShipping(Context c, double total_weight) {
    String weight = Double.toString(total_weight);
    Intent intent = new Intent(c ,shopping1.class);
    intent.putExtra(total_weights, weight);
    c.startActivity(intent);
    double shipping_fee = 0;
    return shipping_fee;
}
LocalbroadcastManager.getInstance(context).setBroadcast(intent);