changed handle back pressed logic
This commit is contained in:
parent
9ef31e6d2c
commit
ec3461d8a2
1 changed files with 41 additions and 29 deletions
|
@ -10,6 +10,7 @@ import android.os.Bundle;
|
||||||
import android.window.OnBackInvokedCallback;
|
import android.window.OnBackInvokedCallback;
|
||||||
import android.window.OnBackInvokedDispatcher;
|
import android.window.OnBackInvokedDispatcher;
|
||||||
|
|
||||||
|
import androidx.activity.OnBackPressedCallback;
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
import androidx.appcompat.app.AppCompatActivity;
|
import androidx.appcompat.app.AppCompatActivity;
|
||||||
|
@ -168,41 +169,52 @@ public class RoutingParameterDialog extends AppCompatActivity {
|
||||||
new OnBackInvokedCallback() {
|
new OnBackInvokedCallback() {
|
||||||
@Override
|
@Override
|
||||||
public void onBackInvoked() {
|
public void onBackInvoked() {
|
||||||
StringBuilder sb = null;
|
handleBackPressed();
|
||||||
if (sharedValues != null) {
|
|
||||||
// fill preference with used params
|
|
||||||
// for direct use in the BRouter interface "extraParams"
|
|
||||||
sb = new StringBuilder();
|
|
||||||
for (Map.Entry<String, ?> entry : sharedValues.getAll().entrySet()) {
|
|
||||||
if (!entry.getKey().equals("params")) {
|
|
||||||
sb.append(sb.length() > 0 ? "&" : "")
|
|
||||||
.append(entry.getKey())
|
|
||||||
.append("=");
|
|
||||||
String s = entry.getValue().toString();
|
|
||||||
if (s.equals("true")) s = "1";
|
|
||||||
else if (s.equals("false")) s = "0";
|
|
||||||
sb.append(s);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// and return the array
|
|
||||||
// one should be enough
|
|
||||||
Intent i = new Intent();
|
|
||||||
// i.putExtra("PARAMS", listParams);
|
|
||||||
i.putExtra("PROFILE", profile);
|
|
||||||
i.putExtra("PROFILE_HASH", profile_hash);
|
|
||||||
if (sb != null) i.putExtra("PARAMS_VALUES", sb.toString());
|
|
||||||
|
|
||||||
setResult(Activity.RESULT_OK, i);
|
|
||||||
finish();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
} else {
|
||||||
|
OnBackPressedCallback callback = new OnBackPressedCallback(true) {
|
||||||
|
@Override
|
||||||
|
public void handleOnBackPressed() {
|
||||||
|
handleBackPressed();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
getOnBackPressedDispatcher().addCallback(this, callback);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void handleBackPressed() {
|
||||||
|
StringBuilder sb = null;
|
||||||
|
if (sharedValues != null) {
|
||||||
|
// fill preference with used params
|
||||||
|
// for direct use in the BRouter interface "extraParams"
|
||||||
|
sb = new StringBuilder();
|
||||||
|
for (Map.Entry<String, ?> entry : sharedValues.getAll().entrySet()) {
|
||||||
|
if (!entry.getKey().equals("params")) {
|
||||||
|
sb.append(sb.length() > 0 ? "&" : "")
|
||||||
|
.append(entry.getKey())
|
||||||
|
.append("=");
|
||||||
|
String s = entry.getValue().toString();
|
||||||
|
if (s.equals("true")) s = "1";
|
||||||
|
else if (s.equals("false")) s = "0";
|
||||||
|
sb.append(s);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// and return the array
|
||||||
|
// one should be enough
|
||||||
|
Intent i = new Intent();
|
||||||
|
// i.putExtra("PARAMS", listParams);
|
||||||
|
i.putExtra("PROFILE", profile);
|
||||||
|
i.putExtra("PROFILE_HASH", profile_hash);
|
||||||
|
if (sb != null) i.putExtra("PARAMS_VALUES", sb.toString());
|
||||||
|
|
||||||
|
setResult(Activity.RESULT_OK, i);
|
||||||
|
finish();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onConfigurationChanged(Configuration newConfig) {
|
public void onConfigurationChanged(Configuration newConfig) {
|
||||||
super.onConfigurationChanged(newConfig);
|
super.onConfigurationChanged(newConfig);
|
||||||
|
|
Loading…
Reference in a new issue