我的第一个项目停留在OnActivityforResult上

问题描述 投票:0回答:1

[我尝试制作一个简单的应用程序,使其在拥有四个玩家的游戏中保持得分。当我按下加号或减号按钮时,它将打开一个新活动(对话框主题),用户应在该活动中输入其得分。该分数应存储在文本视图中。代码的某些部分看起来像这样:

我在这里开展了新活动

        buttonPlus1.setOnClickListener(this);
        buttonPlus2.setOnClickListener(this);
        buttonPlus3.setOnClickListener(this);
        buttonPlus4.setOnClickListener(this);
        buttonMinus1.setOnClickListener(this);
    }
            @Override
            public void onClick(View v) {

            switch (v.getId()) {
                case R.id.buttPlusPlayer1:

                    Intent i = new Intent(this, SecondActivity.class);
                    startActivityForResult(i, 1);
                    break;

                case R.id.buttPlusPlayer2:
                    Intent i2 = new Intent(this, ThirdPlusActivity.class);
                    startActivityForResult(i2, 2);
                    break;

                case R.id.buttPlusPlayer3:
                    Intent i3 = new Intent(this, FourthPlusActivity.class);
                    startActivityForResult(i3, 3);
                    break;

                case R.id.buttPlusPlayer4:
                    Intent i4 = new Intent(this, FifthPlusActivity.class);
                    startActivityForResult(i4, 4);
                    break;

                case R.id.buttMinusPlayer1:
                    Intent i5 = new Intent(this, FirstMinusActivity.class);
                    startActivityForResult(i5, 1);
            }
            }

这是活动如何将数据发送回主要活动的示例

public class SecondActivity extends AppCompatActivity {
    private EditText mEditText;
    private ImageButton mBackSpace;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
        setTitle("ADD POINTS");
        mEditText = findViewById(R.id.editTxtActivity);



        //implementing backspace button

        mBackSpace = findViewById(R.id.backSpaceButton);
        mBackSpace.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String str = mEditText.getText().toString();
                if (str.length() > 0) {
                    str = str.substring(0, str.length() - 1);
                    mEditText.setText(str);
                }
            }
        });

    }

    @Override
    public void onBackPressed() {

                Intent i = new Intent();
                i.putExtra("message", mEditText.getText().toString());
                setResult(RESULT_OK, i);
                Toast.makeText(this, "You added " + mEditText.getText().toString() + " points", Toast.LENGTH_LONG).show();
            finish();



            }


    }

并且“现在”我从活动中收到结果

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


        if (requestCode == 1 && resultCode == RESULT_OK)   {
        String a = data.getStringExtra("message");
        int i =Integer.parseInt(a);
        String b = data.getStringExtra ("message5");
        int z = Integer.parseInt(b);
        Integer fResult = i - z;
        String firstResult = fResult.toString();
        mFirstScore.setText(firstResult);
            }

        if (requestCode == 2 && resultCode == RESULT_OK) {
            mSecondscore.setText(data.getStringExtra("message2"));
        }
        if (requestCode == 3 && resultCode == RESULT_OK) {
            mThirdScore.setText(data.getStringExtra("message3"));
        }

        if (requestCode == 4 && resultCode == RESULT_OK) {
            mFourthscore.setText(data.getStringExtra("message4"));
        }

问题出在代码的最后一部分,因为我不知道如何从活动中接收数据并计算结果。我想当用户单击加号按钮以添加数字,并且单击减号按钮以减去时,结果要存储在TextView夹中,对于player1,在我的情况下是mFirstScore。这是可能的还是我做错了什么,也不可能操纵从另一个活动接收到的数据,我如何成像

PS:在case上buttMinusPlayer1上,并且首先在if上使用requestCode 1我已经尝试过一些东西;

android onclicklistener onactivityresult onbackpressed
1个回答
1
投票

在SecondActivity上,将您的密钥message2

@Override
public void onBackPressed() {

        Intent i = new Intent();
        i.putExtra("message2", mEditText.getText().toString());
        setResult(RESULT_OK, i);
        finish();       
}

并通过相同的键message2从SecondActivity获取数据

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

 if (requestCode == 2 && resultCode == RESULT_OK) {
            mSecondscore.setText(data.getStringExtra("message2"));
        }
}

希望这会有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.