因此,我们在学校处理意图时,当我尝试执行setResult()和东西时,当我尝试将数据从“ Activity2”传递到“ Activity1”时,我遇到了意图问题。问题在于,当我第一次触发该事件时,它不会回到第一个活动,但是会第二次。
我与Android Studio的工作仅约12小时,因此我真的缺乏很多了解。
这是我在做什么:
首先,我将此表称为主要活动。
public void CheckPassword(View view) {
password = PasswordManagement.getPassword(this);
TextView txtPassword = findViewById(R.id.txtPassword);
if (txtPassword.getText().toString().equals(password)) {
Intent intent;
intent = new Intent(this, WelcomeActivity.class);
intent.putExtra("password", password);
startActivityForResult(intent, 1);
startActivity(intent);
} else {
Intent intent;
intent = new Intent(this, RestrictedActivity.class);
startActivityForResult(intent, 1);
startActivity(intent);
}
}
然后,当我完成第二个活动时,运行以下命令:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_restricted);
lblRestrictedArea = findViewById(R.id.lblRestrictedArea);
lblRestrictedArea.setOnLongClickListener(
new OnLongClickListener() {
public boolean onLongClick(View view) {
intent = new Intent();
intent.putExtra(EXTRA_RESPONSE, true);
setResult(RESULT_OK, intent);
finish();
return false;
}
});
}
回到主要活动,我改写了这个内容以根据响应进行操作:
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK) {
if (requestCode == 1) {
if (data.getBooleanExtra(RestrictedActivity.EXTRA_RESPONSE,false)){
LinearLayoutPasswordActivity.setBackgroundColor(getResources().getColor(R.color.red));
}else{
LinearLayoutPasswordActivity.setBackgroundColor(getResources().getColor(R.color.white));
}
}
}
}
如果有人可以帮助我,我将非常高兴,与此同时,我将尝试自行解决。 谢谢!
答案 0 :(得分:0)
您两次调用startActivity。因此,有两个相同的Activity
实例,然后您必须完成两次。
保留您的startActivityForResult(...)
并删除startActivity
中的CheckPassword(View view)
->
public void CheckPassword(View view) {
password = PasswordManagement.getPassword(this);
TextView txtPassword = findViewById(R.id.txtPassword);
if (txtPassword.getText().toString().equals(password)) {
Intent intent;
intent = new Intent(this, WelcomeActivity.class);
intent.putExtra("password", password);
startActivityForResult(intent, 1);
// startActivity(intent);
} else {
Intent intent;
intent = new Intent(this, RestrictedActivity.class);
startActivityForResult(intent, 1);
//startActivity(intent);
}
}
此外,请注意,您在两个不同的活动中使用相同的requestCode
(1)。 requestCode
对于onActivityResult
方法非常重要。