diff --git a/src/main/res/layout/layout_scanner.xml b/src/main/res/layout/layout_scanner.xml
index cd15bef3..ae575a39 100644
--- a/src/main/res/layout/layout_scanner.xml
+++ b/src/main/res/layout/layout_scanner.xml
@@ -1,15 +1,12 @@
-
-
-
-
-
+ android:layout_height="match_parent"
+ android:orientation="vertical">
-
+
+
diff --git a/src/main/scala/com/github/shadowsocks/AppManager.scala b/src/main/scala/com/github/shadowsocks/AppManager.scala
index 7a4cfa3f..938c1150 100644
--- a/src/main/scala/com/github/shadowsocks/AppManager.scala
+++ b/src/main/scala/com/github/shadowsocks/AppManager.scala
@@ -42,6 +42,7 @@ package com.github.shadowsocks
import java.util.concurrent.atomic.AtomicBoolean
import android.Manifest.permission
+import android.app.TaskStackBuilder
import android.content._
import android.content.pm.PackageManager
import android.graphics.drawable.Drawable
@@ -220,9 +221,11 @@ class AppManager extends AppCompatActivity with OnMenuItemClickListener {
toolbar = findViewById(R.id.toolbar).asInstanceOf[Toolbar]
toolbar.setTitle(R.string.proxied_apps)
toolbar.setNavigationIcon(R.drawable.abc_ic_ab_back_material)
- toolbar.setNavigationOnClickListener((v: View) => {
+ toolbar.setNavigationOnClickListener(_ => {
val intent = getParentActivityIntent
- if (intent == null) finish else navigateUpTo(intent)
+ if (shouldUpRecreateTask(intent) || isTaskRoot)
+ TaskStackBuilder.create(this).addNextIntentWithParentStack(intent).startActivities()
+ else finish()
})
toolbar.inflateMenu(R.menu.app_manager_menu)
toolbar.setOnMenuItemClickListener(this)
diff --git a/src/main/scala/com/github/shadowsocks/ProfileManagerActivity.scala b/src/main/scala/com/github/shadowsocks/ProfileManagerActivity.scala
index 5edded94..f75f7aac 100644
--- a/src/main/scala/com/github/shadowsocks/ProfileManagerActivity.scala
+++ b/src/main/scala/com/github/shadowsocks/ProfileManagerActivity.scala
@@ -2,7 +2,7 @@ package com.github.shadowsocks
import java.nio.charset.Charset
-import android.app.Activity
+import android.app.{Activity, TaskStackBuilder}
import android.content._
import android.content.pm.PackageManager
import android.nfc.NfcAdapter.CreateNdefMessageCallback
@@ -203,9 +203,11 @@ final class ProfileManagerActivity extends AppCompatActivity with OnMenuItemClic
val toolbar = findViewById(R.id.toolbar).asInstanceOf[Toolbar]
toolbar.setTitle(R.string.profiles)
toolbar.setNavigationIcon(R.drawable.ic_navigation_close)
- toolbar.setNavigationOnClickListener((v: View) => {
+ toolbar.setNavigationOnClickListener(_ => {
val intent = getParentActivityIntent
- if (intent == null) finish else navigateUpTo(intent)
+ if (shouldUpRecreateTask(intent) || isTaskRoot)
+ TaskStackBuilder.create(this).addNextIntentWithParentStack(intent).startActivities()
+ else finish()
})
toolbar.inflateMenu(R.menu.profile_manager_menu)
toolbar.setOnMenuItemClickListener(this)
diff --git a/src/main/scala/com/github/shadowsocks/ScannerActivity.scala b/src/main/scala/com/github/shadowsocks/ScannerActivity.scala
index 5cf1144c..064ca04d 100644
--- a/src/main/scala/com/github/shadowsocks/ScannerActivity.scala
+++ b/src/main/scala/com/github/shadowsocks/ScannerActivity.scala
@@ -1,6 +1,6 @@
package com.github.shadowsocks
-import android.app.Activity
+import android.app.{Activity, TaskStackBuilder}
import android.content.Intent
import android.content.pm.{PackageManager, ShortcutManager}
import android.os.{Build, Bundle}
@@ -8,16 +8,18 @@ import android.support.v4.app.ActivityCompat
import android.support.v4.content.ContextCompat
import android.support.v7.app.AppCompatActivity
import android.support.v7.widget.Toolbar
-import android.view.{MenuItem, ViewGroup}
import android.widget.Toast
import com.google.zxing.Result
import me.dm7.barcodescanner.zxing.ZXingScannerView
+object ScannerActivity {
+ private final val MY_PERMISSIONS_REQUEST_CAMERA = 1
+}
+
class ScannerActivity extends AppCompatActivity with ZXingScannerView.ResultHandler {
+ import ScannerActivity._
- val MY_PERMISSIONS_REQUEST_CAMERA = 1
-
- var scannerView: ZXingScannerView = _
+ private var scannerView: ZXingScannerView = _
override def onRequestPermissionsResult(requestCode: Int, permissions: Array[String],
grantResults: Array[Int]) {
@@ -34,14 +36,21 @@ class ScannerActivity extends AppCompatActivity with ZXingScannerView.ResultHand
}
}
+ def navigateUp() {
+ val intent = getParentActivityIntent
+ if (shouldUpRecreateTask(intent) || isTaskRoot)
+ TaskStackBuilder.create(this).addNextIntentWithParentStack(intent).startActivities()
+ else finish()
+ }
+
override def onCreate(state: Bundle) {
super.onCreate(state)
setContentView(R.layout.layout_scanner)
- setupToolbar()
-
- scannerView = new ZXingScannerView(this)
- val contentFrame = findViewById(R.id.content_frame).asInstanceOf[ViewGroup]
- contentFrame.addView(scannerView)
+ val toolbar = findViewById(R.id.toolbar).asInstanceOf[Toolbar]
+ toolbar.setTitle(getTitle)
+ toolbar.setNavigationIcon(R.drawable.abc_ic_ab_back_material)
+ toolbar.setNavigationOnClickListener(_ => navigateUp())
+ scannerView = findViewById(R.id.scanner).asInstanceOf[ZXingScannerView]
if (Build.VERSION.SDK_INT >= 25) getSystemService(classOf[ShortcutManager]).reportShortcutUsed("scan")
}
@@ -67,29 +76,7 @@ class ScannerActivity extends AppCompatActivity with ZXingScannerView.ResultHand
val intent = new Intent()
intent.putExtra("uri", rawResult.getText)
setResult(Activity.RESULT_OK, intent)
- navigateUpTo(getParentActivityIntent)
+ navigateUp()
}
-
- def setupToolbar() {
- val toolbar = findViewById(R.id.toolbar).asInstanceOf[Toolbar]
- setSupportActionBar(toolbar)
- val ab = getSupportActionBar()
- if (ab != null) {
- ab.setDisplayHomeAsUpEnabled(true)
- }
- }
-
- override def onOptionsItemSelected(item: MenuItem): Boolean = {
- item.getItemId() match {
- // Respond to the action bar's Up/Home button
- case android.R.id.home =>
- setResult(Activity.RESULT_CANCELED, new Intent())
- finish()
- return true
- case _ => // Do nothing
- }
- return super.onOptionsItemSelected(item)
- }
-
}