Skip to content
This repository was archived by the owner on Jul 25, 2024. It is now read-only.

Commit 32c2196

Browse files
saketkumartimabbott
authored andcommitted
Fixes: #236: Double back press to exit.
1 parent 1112034 commit 32c2196

File tree

2 files changed

+26
-6
lines changed

2 files changed

+26
-6
lines changed

app/src/main/java/com/zulip/android/activities/ZulipActivity.java

Lines changed: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,7 @@ public class ZulipActivity extends BaseActivity implements
129129
private ZulipApp app;
130130

131131
private boolean logged_in = false;
132+
private boolean backPressedOnce = false;
132133

133134
private ZulipActivity that = this; // self-ref
134135

@@ -146,6 +147,7 @@ public class ZulipActivity extends BaseActivity implements
146147
private AsyncGetEvents event_poll;
147148

148149
private Handler statusUpdateHandler;
150+
private Runnable statusUpdateRunnable;
149151

150152
public MessageListFragment currentList;
151153
private MessageListFragment narrowedList;
@@ -406,7 +408,7 @@ public void onItemClick(AdapterView<?> parent, View view,
406408

407409
// send status update and check again every couple minutes
408410
statusUpdateHandler = new Handler();
409-
Runnable statusUpdateRunnable = new Runnable() {
411+
statusUpdateRunnable = new Runnable() {
410412
@Override
411413
public void run() {
412414
AsyncStatusUpdate task = new AsyncStatusUpdate(
@@ -1433,12 +1435,28 @@ public void clearChatBox() {
14331435
}
14341436

14351437
public void onBackPressed() {
1436-
if (narrowedList != null) {
1437-
narrowedList = null;
1438-
getSupportFragmentManager().popBackStack(NARROW,
1438+
if (narrowedList == null) {
1439+
1440+
if (backPressedOnce) {
1441+
finish();
1442+
}
1443+
1444+
backPressedOnce = true;
1445+
Toast.makeText(this, R.string.press_again_to_exit, Toast.LENGTH_SHORT).show();
1446+
statusUpdateRunnable = new Runnable() {
1447+
@Override
1448+
public void run() {
1449+
backPressedOnce = false;
1450+
}
1451+
};
1452+
1453+
statusUpdateHandler.postDelayed(statusUpdateRunnable, 2000);
1454+
1455+
1456+
} else {
1457+
narrowedList = null;
1458+
getSupportFragmentManager().popBackStack(NARROW,
14391459
FragmentManager.POP_BACK_STACK_INCLUSIVE);
1440-
} else {
1441-
super.onBackPressed();
14421460
}
14431461
}
14441462

@@ -1804,6 +1822,7 @@ protected void onDestroy() {
18041822
super.onDestroy();
18051823
if (statusUpdateHandler != null) {
18061824
statusUpdateHandler.removeMessages(0);
1825+
statusUpdateHandler.removeCallbacks(statusUpdateRunnable);
18071826
}
18081827
}
18091828

app/src/main/res/values/strings.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
<string name="title_activity_legal">Legal</string>
1919
<string name="streams_open">Open stream sidebar</string>
2020
<string name="streams_close">Close stream sidebar</string>
21+
<string name="press_again_to_exit">Press again to exit</string>
2122

2223
<!-- Used on the indicator when loading messages -->
2324
<string name="loading_messages">Loading messages</string>

0 commit comments

Comments
 (0)