2016-04-19 5 views
-1

私は関数から別のクラスに総重量を渡そうとしました。私はgetIntent()を使用する予定です。しかし、静的関数はそれを許可しません。その場合、どうすればいいですか?以下はclass1の静的関数です。私は "this"の部分でエラーになっています。class1の静的関数から別のclass2に変数を渡すにはどうすればよいですか?

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

これはクラス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); 
} 
} 
+0

STATIC関数は、クラス名を使用して直接呼び出すことができます –

+0

呼び出す方法を表示できますか? –

+0

関数を無効にして意図を呼び出す@CheongCharlene –

答えて

0

thisは、オブジェクトの現在のインスタンスを参照します。静的メソッドでは使用できません。

静的メソッドは実行する必要がないため、オブジェクトをパラメータとして渡す必要があります。

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; 
} 
+0

"これ"、他に何が使えますか? –

+0

総重量値は、データを渡す別のクラスから取得するためです。総重量+重量=量shippingfee = Shopping.getShipping(totalweight);.したがって、getShipping関数にコンテキストを追加した後、私は自分のコードをshippingfee = Shopping.getShipping(Context c、totalweight)に変更する必要がありますか? –

+0

shippingfee = Shopping.getShipping(コンテキストc、totalweight)を置くと、nullポインタ例外エラーが発生しています。 –

0

固定メソッドにContextを渡します。そこから複数の方法でデータを共有できます。

1)アクティビティがまだ開始されていない場合は、startActivity()とインテントエクストラを使用できます。

2)アクティビティが既に開始されている場合は、LocalBroadcastManagerを使用できます。

LocalbroadcastManager.getInstance(context).setBroadcast(intent); 
関連する問題