Java 如何将变量从class1的静态函数传递到另一个class2?
我打算将函数的总权重传递给另一个类。我计划使用getIntent()。但是,静态函数不允许这样做。如果是这样,我应该如何通过?下面是class1的静态函数。我一直在“这个”部分出错 这是class 2函数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);
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);