4

了解しました。また来ました。まだ学んでいます。次に、2つのアクティビティから整数値をやり取りする必要があります。最初のアクティビティはカウンター値を2番目のアクティビティに渡します(これはプレーヤーの統計を追跡します)。2番目のアクティビティには、統計をゼロにリセットする機能があるため、数値を返します。しかし、私はそれについて頭を悩ませることができません。これが私がこれまでに持っているものです...

最初のアクティビティ(メイン):

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.menu_settings:
            Intent i = new Intent(this, Options.class);
            Bundle counters = new Bundle();
            counters.putInt("plWin", plWin);
            counters.putInt("plLoss", plLoss);
            counters.putInt("plDraw", plDraw);
            i.putExtras(counters);
            startActivityForResult(i, ?);
            return true;

「?」を記入してください

2番目のアクティビティ(オプション):

public void onBackPressed() {
    super.onBackPressed();
    Intent i = new Intent();
    Bundle counters = new Bundle();
    counters.putInt("Wins", wins);
    counters.putInt("Losses", losses);
    counters.putInt("Draws", draws);
    i.putExtras(counters);
    setResult(?, i);
    finish();
}

繰り返しますが、「?」を理解できません。

そして、私の最初の活動に戻って、私は何が後に続くのかわかりません:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

これを理解するために死にかけています。前もって感謝します。

4

1 に答える 1

13

このようにしてください

startActivityForResult(i, 100);  

setResultの場合

setResult(RESULT_OK);

setresultを使用して、次のような結果をより高度に送信できます。

intent = new Intent();
intent.putExtra("key", "I am done");
setResult(1001, intent);

そしてonActivityResultで

protected void onActivityResult(int requestCode, int resultCode, Intent data) {    
   if(requestCode == 100)
   {
    String key = data.getStringExtra("key");
    if(resultcode == 1001 && key!= null && key.equals("I am done"){
       //do something
    }else{
       //do something else
    }

   }
} 

setResultを使用する必要はありません。チェックする必要があるのは、アクティビティから戻ったかどうかだけである場合は、それを設定したり、onActivityResultをチェックインしたりしないでください。

于 2012-09-02T03:09:32.593 に答える