需要有关“用于结果意图”的帮助,代码无法正常工作

时间:2019-07-25 11:01:14

标签: android-studio android-intent

这是我在这里的第一个问题,我希望我对StackOverflow策略没有犯任何错误。 我将此代码写为作业,以改进ForResult意图的使用。 进入活动B,有一个按钮,触摸它,我们进入下一个活动C。进入活动C,还有另一个按钮,该按钮通过必须显示在B的页面中的字符串转移回活动B。 开始仿真时,我必须触摸C的按钮3/4次才能返回到活动B,但我真的不知道为什么。有人可以向我解释我错了吗? 预先谢谢你。

代码指的是完整的练习,其中包括活动A(启动),活动B(主要)以及活动C和D,它们的工作方式与我上面所述的相同。这只是为了更好地理解我发布的代码。

活动B:

public class BActivity extends AppCompatActivity {

    TextView resultText;
    Button goToC, goToD;

    @Override
    protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_b);

        goToC = findViewById(R.id.go_to_c_button);
        goToD = findViewById(R.id.go_to_d_button);
        resultText = findViewById(R.id.result_text);

        goToC.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                Intent goToC = new Intent(BActivity.this, CActivity.class);
                startActivityForResult(goToC, 1);
                return false;
            }
        });

        goToD.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                Intent goToD = new Intent(BActivity.this, DActivity.class);
                startActivityForResult(goToD, 2);
                return false;
            }
        });
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data){
        if (requestCode == 1){
            if (resultCode == Activity.RESULT_OK){
                resultText.setText(data.getStringExtra("nomeActivityC"));
            }
            if (resultCode == Activity.RESULT_CANCELED){
            }
        }
        if (requestCode == 2){
            if (resultCode == Activity.RESULT_OK){
                resultText.setText(data.getStringExtra("nomeActivityD"));
            }
            if (resultCode == Activity.RESULT_CANCELED){
            }
        }
    }
}

活动C:

public class CActivity extends AppCompatActivity {

    private Button cToB;

    @Override
    protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_c);

        cToB = findViewById(R.id.go_to_b_from_c_button);

        cToB.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                Intent intent = new Intent();
                intent.putExtra("nomeActivityC", "ACTIVITY C");
                setResult(Activity.RESULT_OK, intent);
                finish();
                return false;
            }
        });
    }
}

我希望仅触摸一次活动C的按钮即可返回到活动B,并显示putExtra的值。

0 个答案:

没有答案