这是我在这里的第一个问题,我希望我对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的值。