请给我反馈是否在活动中有一个后退按钮是好的做法,还是只是废话?也许有些Android手机没有后退/返回键?或者所有型号都有它们吗?

我有一个有两个活动的应用程序:MainActivity和SettingsActivity.MainActivity有一个菜单,其中包含一个"设置"菜单项.单击此菜单项时,它会以意图启动SettingsActivity.活动开始后,我点击左上角的后退按钮,没有任何反应.我假设自从使用intent启动活动后,活动堆栈将自动管理.我想回到MainActivity.这个假设我错了吗?
MainActivity.onMenuItemSelected
public boolean onMenuItemSelected(int featureId, MenuItem item) {
int itemID = item.getItemId();
if(itemID == R.id.settings) {
Intent intent = new Intent(this, SettingsActivity.class);
startActivity(intent);
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
SettingsActivity
public class SettingsActivity extends PreferenceActivity {
public static final String TEST = "test";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
}
}
Run Code Online (Sandbox Code Playgroud) 我正在使用有角度的ui路由器进行我的前端路由,我似乎无法通过浏览器的后退按钮将我带到最新的URL.
让我来证明一下.
让我们说我从这里开始
/#/myapp/
Run Code Online (Sandbox Code Playgroud)
经过一些点击后,我动态调整了我的网址
/#/myapp/12345
Run Code Online (Sandbox Code Playgroud)
假设我在页面上保留时单击一个日期选择器
/#/myapp/12345?start=2016-01-21&end=2016-01-28
Run Code Online (Sandbox Code Playgroud)
我可以通过使用$ scope'd函数与$ location.url一起完成此操作
真棒.到现在为止还挺好.
假设我通过点击导航远离此
<a href="#"> My App </a>
Run Code Online (Sandbox Code Playgroud)
其中,由于我设置路由的方式
myApp.config([
'$stateProvider', '$urlRouterProvider',
function($stateProvider, $urlRouterProvider) {
$stateProvider.state('myapp',
url : '/myapp/*id?start&end',
templateUrl : '<path to my template>',
controller : '<name of my controller>'
);
// more routes
$urlRouterProvider.otherwise('/myapp/');
}
]);
Run Code Online (Sandbox Code Playgroud)
将默认返回初始状态
/#/myapp
Run Code Online (Sandbox Code Playgroud)
好的,到目前为止,还是那么好.但是,当我点击浏览器的后退按钮时,我会被带回去
/#/myapp
Run Code Online (Sandbox Code Playgroud)
而不是我期望的
/#/myapp/12345?start=2016-01-21&end=2016-01-28
Run Code Online (Sandbox Code Playgroud)
我只能猜测我在浏览页面时生成的中间网址没有被浏览器的历史记录捕获...我认为这是合理的.如何让我的浏览器识别这些中间步骤,以便我可以正确回溯?
在多个会话之间管理/恢复应用程序堆栈的最佳做法是什么?
工作流程的例子:
在第7步,我想恢复活动C,如果用户按下后退按钮2次,它将返回活动B,然后返回活动A.
[编辑]添加详细信息.
在上面的第7步之后,Android中默认情况发生的是:
我希望用户感觉他仍在使用相同的会话:
在避免内存泄漏的同时,解决这种情况的好方法是什么?
[第二次编辑]我一直在为所有活动使用commong类UIController制作一个解决方法,并使用LauncherActivity将逻辑委托给UIController.
因为我只需要在ActivityC启动时重建后台堆栈,这个解决方案似乎工作正常:
public class UIController
{
private boolean _launched = false;
static private final UIController __instance = new UIController();
static public UIController getInstance() { return __instance; }
// Enforces the Singleton Pattern by preventing external access to constructor
private UIController() { }
public void onActivityCreated(Activity activity) {
if (!_launched)
{
if ( shouldRebuildStack() )
{
// Rebuild Activity stack
// …Run Code Online (Sandbox Code Playgroud) 我有一个加载社交媒体页面的WebView.我重写了Back按钮以goBack在WebView上调用该方法,直到canGoBack()返回false.然后它打电话super.onBackPressed().问题是Twitter和YouTube使用Javascript的方式会canGoBack()返回,true除非你很快点击后退按钮4次.
我已尝试使用当前网址检查原始网址,但该网页的网址与传入的网址不同.
有没有人知道如何让后退按钮调用WebView的goBack方法,直到你开始,然后调用super.onBackPressed?
我是Android开发的新手,我想要它,所以当用户按下主活动上的后退按钮时,会出现一个Toast消息,其中"再次按下后退按钮确认退出"消息.我该怎么做?这是我到目前为止:
@Override
public void onBackPressed() {
// TODO Auto-generated method stub
super.onBackPressed();
Toast s = Toast.makeText(getBaseContext(), "Press back again to exit", Toast.LENGTH_LONG);
s.show();
wait();
public boolean onBackPressed() {
finish();
}
}
Run Code Online (Sandbox Code Playgroud) 我希望我的Android应用程序的用户在按某个活动时退出我的应用程序.可以这样做吗?
我有一个类似Notes的应用程序:uitableviewcontroller通过将它们推送到导航堆栈来显示单个注释.我决定使用ios7后退按钮和随附的平移手势识别器.
我唯一的修改是通过在推送详细视图控制器之前将from-controller的navigationItem标题设置为空字符串来从按钮中删除文本,因为建议在/sf/ask/1320908991/ 7 -导航栏-自定义后退按钮,没有标题
按钮本身工作正常,但当我通过平移手势从笔记返回到笔记表视图时,不会清理tableview选项!我刚刚过渡的音符行仍然显示为选定的一行.任何想法在这里可能是错的?
我已经检查了标准的Notes应用程序,它就像一个魅力.
一旦用户点击注销,如何删除Angular模板缓存?我们进行了彻底的研究,并尝试实施大部分可用的解决方案.我们试过以下
HTML元标记
<meta http-equiv="Cache-Control" content="no-cache" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="0" />
Run Code Online (Sandbox Code Playgroud)
服务器端
res.setHeader('cache-control', 'no-cache', 'no-store', 'must-revalidate');
Run Code Online (Sandbox Code Playgroud)
使用Javascript
我们尝试删除此博客上指定的浏览器历史记录
我们现在面临的问题是,当用户从我们的应用程序退出并按下后退按钮时,他显示空的html模板,因为服务未缓存,我们如何确保模板不缓存?