小编jli*_*lim的帖子

从后台恢复Android应用程序堆栈

让我们说我从主屏幕启动我的应用程序,浏览一些活动,然后我按下主页键并在Gmail应用程序中执行其他操作.

检查完邮件后,我再次按主页键退出Gmail应用程序,再次单击主屏幕上的应用程序图标返回.

当我回到我的应用程序时,我希望它返回到我最近的活动,而不是开始一个全新的会话.我一直试图弄清楚这一点.

我第一次活动的表现如下:

 <activity android:name=".Main"
              android:label="@string/app_name"
              android:screenOrientation="portrait"
              android:alwaysRetainTaskState="true">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
Run Code Online (Sandbox Code Playgroud)

类别属性LAUNCHER使我的应用程序始终在活动Main开始,所以我不知道如何恢复上一个活动.人们告诉我使用共享偏好保存最后一个活动并将其加载到Launch上,但我不认为这样做是因为它不是很优雅.

java android

15
推荐指数
1
解决办法
2023
查看次数

android listviews:页眉和页脚视图

在我的ListActivity中,我需要页眉和页脚视图(在列表的顶部和底部)分别用作列表中的上一页和下一页按钮,因为我想一次只显示20个项目.

我通过以下方式设置我的标题和英尺视图:

getListView().addHeaderView(myHeaderView);
getListView().addFooterView(myFooterView);
setListAdapter(adapter);
Run Code Online (Sandbox Code Playgroud)

这工作正常,但我需要动态删除和添加这些页眉和页脚视图,因为我的列表中的某些页面可能没有下一页按钮或上一页按钮.

问题是,在调用setListAdapter之后,我无法调用addHeaderView或addFooterView.

有没有解决的办法?

java android listview adapter

14
推荐指数
1
解决办法
2万
查看次数

使用alwaysRetainTaskState和lauchMode保留android应用程序状态

在我的Android应用程序中,我有一个主要活动,作为我的应用程序的入口点,在我的清单文件中配置如下:

<activity android:name=".Main"
              android:label="@string/app_name"
              android:screenOrientation="portrait"
              android:alwaysRetainTaskState="true"
              android:launchMode="singleTask">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
Run Code Online (Sandbox Code Playgroud)

因此,对于特定用例,假设用户通过单击应用程序启动器内的图标从主屏幕启动应用程序.启动应用程序后,用户从主活动导航到活动A,然后最终导航到活动B.此时,用户决定检查他们的Facebook,所以他们点击主页按钮将我的应用程序放在后台,然后启动Facebook应用程序.

在检查他们的Facebook后,用户想要返回我的应用程序,所以他们按下主页键,然后从应用程序启动器启动应用程序(就像他们第一次启动时那样).

当用户返回我的应用程序时,我希望应用程序返回到应用程序放入后台时用户所处的最后一项活动,在本例中为活动B.在清单文件中,我设置了alwaysRetainTaskState = true确保操作系统不会破坏我的应用程序的活动.

现在我的问题是:我如何得到上面描述的行为?每当我点击我的应用程序的图标时,它总是从Main活动开始,无论如何.我认为这是因为category.LAUNCHER属性.我试过android:launchMode = singleTask,但它没有什么区别; 它总是从Main开始.

如果有人可以澄清意图过滤器,启动模式和任务,那就太棒了!

java android manifest filter android-intent

14
推荐指数
3
解决办法
1万
查看次数

在http客户端服务中保存CookieStore

我为我的Android应用程序提供了一个执行HTTP调用的服务.该服务将Cookie存储在CookieStore中.我试图找到一种方法来坚持CookieStore,但我还没有成功.我不希望用户每次都登录以接收新的CookieStore.

我尝试使用SharedPreferences将CookieStore存储为字符串,但我无法使用String重新构造CookieStore.

还有其他人在坚持CookieStore方面取得了成功吗?

java cookies android

7
推荐指数
2
解决办法
3547
查看次数

AngularJS Binding:Dropdown绑定字符串,需要编号

我有一个下拉列表,允许用户选择一个数字.

<body ng-app="myApp">
    <div ng-controller="MyCtrl">
        <select ng-model="selectedNum" ng-change="numberSelected()">
            <option value="10">10</option>
            <option value="20">20</option>
            <option value="30">30</option>
            <option value="40">40</option>
            <option value="50">50</option>
        </select>
    </div>
</body>
Run Code Online (Sandbox Code Playgroud)

回到我的控制器中,我可以通过$ scope.selectedNumber引用所选的值

angular.module('myApp', []).controller('MyCtrl', function($scope) {

    $scope.selectedNum = 10;

    $scope.numberSelected = function(){
        alert(typeof $scope.selectedNum); //alerts string, need this to be a number
    }
});
Run Code Online (Sandbox Code Playgroud)

工作小提琴

我是角色的新手 - 来自jQuery我习惯于显式调用Number($('#mySelect').val())但是在角度中,值会自动绑定到$ scope.

我的问题:有没有办法强制$ scope.selectedNum为类型号?在我的实际项目中,我使用selectedNum进行一些计算.我想我可以在各个地方使用Number(..)或parseInt(..),但我认为这可能会有点重复和混乱.

angularjs angularjs-scope

5
推荐指数
1
解决办法
3283
查看次数

Android ContactsConontract并构建多个SDK版本

我需要我的应用程序在所有Android版本上运行,但Contacts API在2.0中更改.

在SDK 1.6及更早版本中,我使用android.provider.Contacts来查询联系人DB,但这在2.0中不起作用

相反,对于2.0我使用android.provider.ContactsContract.这提出了一个问题:当我有ContactsContract的代码时,我的应用程序将不会为1.6及更早版本构建.

我是否需要有两个不同版本的应用程序(一个用于<= 1.6,一个用于2.0及更高版本)或者有没有办法避免这样做?

java android contacts

4
推荐指数
1
解决办法
1532
查看次数

Android onKey带虚拟键盘

我正在使用onKey方法捕获键盘事件/按下:

public boolean onKey(View arg0, int arg1, KeyEvent arg2) {
    //do something
    return false;
}
Run Code Online (Sandbox Code Playgroud)

这对于物理键盘按键来说就好了,但它不会在虚拟键盘按下时触发.是否有处理虚拟键盘按下的事件处理程序?

java android

2
推荐指数
1
解决办法
2839
查看次数

系统杀死活动时具有全局变量的Android持久状态

为了在我的Android应用程序中保持状态,以便用户将返回到他们中断的活动,我在我的清单中设置了非常有用的标志alwaysRetainTaskState:

<activity android:name=".Main"
              android:label="@string/app_name"
              android:alwaysRetainTaskState="true"> 
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
Run Code Online (Sandbox Code Playgroud)

这可以完成工作,或者我认为; 我发现系统仍然可以破坏我的应用程序的活动以保留内存,同时仍保持状态.为了验证这一点,我写了一个小测试应用程序,它在循环中创建了一大堆活动,以查看我的应用程序的活动是否会被销毁.果然,系统会破坏我的活动.

通过一些阅读,我发现我需要使用onSaveInstanceState()和onRestoreInstanceState()来帮助维护活动状态.

为了解决我的问题,假设我有一个包含许多全局变量的Activity,其中一些是静态的,有些则不是.它们由布尔,arraylists,字符串等组成.我的问题是,当一个活动被销毁时,我很困惑这些变量中的哪一个是持久的.我应该在onSaveInstanceState()中打包哪些包?当活动被销毁时,系统是否对这些变量做了什么?

java android android-intent

2
推荐指数
1
解决办法
3328
查看次数