0

私はこれにとても苦労しているとは信じられません。ゲーム アクティビティに次の変数があります。

public static int numberOfPointsA;

そして別の活動で

public static int numberOfPointsB;

ここで、これらの値を別のアクティビティに渡す必要があります。そこで、これらの値を合計し、結果を textView に設定する必要があります。これらは public static 変数なので、試しました:

public static int totalScore = ClassA.numberOfPointsA + ClassB.numberOfPointsB;

textView.setText("" + totalScore);

しかし、それはうまくいきません。だから私は意図的に試しました:

ゲームクラスA:

Intent intent = new Intent(this, Menu.class);
                intent.putExtra("foobar", numberOfPointsA);
                startActivity(intent);

そしてメニュークラスで:

Intent intent = getIntent();
    int numberOfPointsA = intent.getIntExtra("foobar", 0);

しかし、それもうまくいきません。アクティビティのスコープに配置すると、アクティビティが開始されるとすぐにクラッシュします。onCreate メソッドに配置すると、int 変数を使用できなくなります。onCreate メソッドでは必要ありません。別の場所で必要です。

ゲームクラスで変数を設定し、メニュークラスに渡し、そこに保存してから、ゲームクラスBを終了してその変数で同じことを行い、それら2つの変数を合計して正常に設定する方法テキストビュー?

メニュー アクティビティ:

public class Izbor extends Activity 実装 OnClickListener{

private int asocijacijeUkupno = 0;
private int thUkupno = 0;

int ukupanBrojPoena = asocijacijeUkupno + thUkupno;

Button toploHladno, asocijacije, cigle, spojnice, nazad, poeniTH, poeniAso, poeniCigle, poeniSpojnice, poeniUkupno;
TextView naslov;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    asocijacijeUkupno = getIntent().getIntExtra("RUNNING_TOTAL", 0);
    thUkupno = getIntent().getIntExtra("RUNNING_TOTAL2", 0);

    setContentView(R.layout.izbor);

    addListenerOnButton();

}


private void addListenerOnButton() {

    naslov = (TextView) findViewById(R.id.tvIzborNaslov);
    toploHladno = (Button) findViewById(R.id.bIzbor1);
    asocijacije = (Button) findViewById(R.id.bIzbor2);
    cigle = (Button) findViewById(R.id.bIzbor3);
    spojnice = (Button) findViewById(R.id.bIzbor4);
    nazad = (Button) findViewById(R.id.bIzborNazad);
    poeniTH = (Button) findViewById(R.id.bPoeniTH);
    poeniAso = (Button) findViewById(R.id.bPoeniAso);
    poeniCigle = (Button) findViewById(R.id.bPoeniCigle);
    poeniSpojnice = (Button) findViewById(R.id.bPoeniSpojnice);
    poeniUkupno = (Button) findViewById(R.id.bPoeniUkupno);


    toploHladno.setOnClickListener(this);
    asocijacije.setOnClickListener(this);
    cigle.setOnClickListener(this);
    spojnice.setOnClickListener(this);
    nazad.setOnClickListener(this);

}


@Override
protected void onStart() {
    super.onStart();

    if(asocijacijeUkupno != 0){
    poeniAso.setText("" + asocijacijeUkupno);
    }else{
        poeniAso.setText("");
    }
    if(thUkupno != 0){
    poeniTH.setText("" + thUkupno);
    }else{
        poeniTH.setText("");
    }
    if(ukupanBrojPoena != 0){
    poeniUkupno.setText("" + ukupanBrojPoena);
    }else{
        poeniUkupno.setText("");
    }
}

public void onClick(View v) {
    switch(v.getId()){
    case R.id.bIzbor1:
        if(music == true){
            buttonClicks.start();
                }
        startActivity(new Intent("rs.androidaplikacije.toplo_hladno.TOPLOHLADNO"));
        break;
    case R.id.bIzbor2:
        if(music == true){
            buttonClicks.start();
                }
        startActivity(new Intent("rs.androidaplikacije.toplo_hladno.ASOCIJACIJE"));
        break;
    case R.id.bIzbor3:
        if(music == true){
            buttonClicks.start();
                }

        break;
    case R.id.bIzbor4:
        if(music == true){
            buttonClicks.start();
                }

        break;
    case R.id.bIzborNazad:
        if(music == true){
            buttonBack.start();
                }
        finish();
        break;
    }

}

}

4

2 に答える 2

0

以下は非常に基本的な例で、2 つのアクティビティを使用して 1 つを渡しintます。

開始する最初のアクティビティ:

public class FirstActivity extends Activity {
    private int mTotal = 0;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
        //.... onCreate code, layout stuff etc....    
    }

    // this is tied to a View onClick call
    public void moveToSecondAct(View view) {
        Intent intent = new Intent();
        intent.putExtra("RUNNING_TOTAL",mTotal);
        intent.setClass(this, SecondActivity.class);
        //... any other options like ...
        intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        // start the second Activity
        startActivity(intent);
    }
}

2 番目のアクティビティの例は次のようなものです。

public class SecondActivity extends Activity {
    private int mTotal = 0;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
        mTotal = getIntent().getIntExtra("RUNNING_TOTAL", 0);
        //.... onCreate code, layout stuff etc....

        Log.i("Running total is:"+ mTotal);
        // update the total on the TextView
        TextView tv = (TextView) findViewById(R.id.poeniUkupno);
        tv.setText("Total: "+ mTotal);
    }
}

編集:物事をより明確にするのに役立ついくつかの変更

于 2013-04-07T02:12:17.530 に答える
0

私はあなたが言おうとしていたことを完全には理解していませんでしたが、私が得たのは、FirstActivity で変数を作成し、その値を SecondActivity に送信し、その合計を ResultActivity に渡したいということでした。

//First Activity
public class FirstActivity extends Activity{
    int firstValue;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        firstValue = 10;
    }
    public sendValueToSecondActivity(View view){
        Intent intent = new Intent(this, SecondActivity.class);
        intent.putExtra("firstValue", firstValue);
        startActivity(intent);
    }
}

//Second Activity
public class SecondActivity extends Activity{
    int sumOfFirstAndSecond;
    int secondValue;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        secondValue = 20;

    }
    public sendValueToSecondActivity(View view){
        sumOfFirstAndSecond = getIntent().getIntExtra("firstValue") + secondValue;
        Intent intent = new Intent(this, ResultActivity.class);
        intent.putExtra("sumOfFirstAndSecond", sumOfFirstAndSecond);
        startActivity(intent);
    }
}

//Result Activity
public class ResultActivity extends Activity{
    TextView textView;
    int result;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        secondValue = 20;
        textView = (TextView) findViewById(R.id.textView);
    }
    public setResultToTextView(View view){
        result = getIntent().getIntExtra("sumOfFirstAndSecond");
        textView.setText(""+result);
    }
}
于 2014-11-10T17:39:30.580 に答える