自分の活動に問題があります。
メインアクティビティがあります。ここには、通常のクラスによって呼び出される2つのメソッドがあります。
public class MainActivity extends Activity {
public void selectUser(String users) {
// Start select user screen
Intent i = new Intent(this, SelectUserActivity.class);
i.putExtra("users", users);
//i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivityForResult(i, SELECT_USER_CODE);
}
public void showPincodeScreen(String userName, String residentName) {
// Start pincode screen
Intent i = new Intent(this, PincodeActivity.class);
i.putExtra("userName", userName);
i.putExtra("residentName", residentName);
i.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(i);
}
}
ユーザーの選択画面で、ユーザーはリストからユーザーを選択でき、このユーザーはメインアクティビティのonActivityResultメソッドに戻ります。これは機能します。
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode != RESULT_CANCELED) {
switch (requestCode) {
case SELECT_RESIDENT_CODE:
if (data != null) {
if (data.hasExtra("residentid")) {
loadingScreen("Taken worden opgehaald");
BroadcastSender.sendValue(
data.getStringExtra("residentid"), "1");
}
}
break;
case SELECT_USER_CODE:
if (data != null) {
if (data.hasExtra("userid") && data.hasExtra("username")) {
setTitle(data.getStringExtra("username"));
loadingScreen.hideMessage();
String userid = data.getStringExtra("userid");
BroadcastSender.sendValue(userid, "1");
}
}
break;
ユーザーが選択されると、showPincodeScreenが呼び出されます。ただし、ユーザーがピンコード画面の特定のボタンを押すと、selectUserメソッドが再度呼び出され、selectUserActivityが再開されます。
しかし、ここでユーザーを選択すると、ピンコード画面が前面に戻り、mainActivityのonActivityResultメソッドが呼び出されません。
私はすでに追加しようとしました
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
select userメソッドに変更しますが、これは機能しません。
原因は何ですか?
編集:これは、selectUserアクティビティの終了メソッドです。しかし、それは初めて動作するので、ここに問題があるとは思いません。
@Override
public void finish() {
// Prepare data intent
Intent data = getIntent();
data.putExtra("userid", selectedItem.getItemID());
data.putExtra("username", selectedItem.getItemName());
// Activity finished ok, return the data
setResult(RESULT_OK, data);
super.finish();
}