有人能告诉我哪个被称为第一个,是它onActivityResult()还是它onResume()?例:
活动A调用startActivityForResult()启动活动B. B执行,完成并将结果返回给A,但是首先调用A的哪个方法,onActivityResult()或者onResume()?
我知道有人已经通过参考活动文档回答了这个问题,但我自己找不到.
我正在使用Tabs的ActionBar自定义视图.我的问题是自定义视图的排序.Android 在标签后显示它- 我不想要.
我希望在标签之前显示自定义视图.
有没有办法自定义actionBar以在标签之前显示自定义视图?或者这不可能吗?
码:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
final ActionBar bar = getActionBar();
bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
View customActionBarView =
getLayoutInflater().inflate(R.layout.home_actionbar, null, true);
ActionBar.LayoutParams lp =
new ActionBar.LayoutParams(LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT);
lp.gravity = Gravity.START;
bar.setCustomView(customActionBarView, lp);
bar.setLogo(R.drawable.logo);
bar.setHomeButtonEnabled(true);
bar.setDisplayShowCustomEnabled(true);
bar.addTab(bar.newTab()
.setText("Stuff")
.setTabListener(new TabListener<StuffFragment>(
this, "stuff", StuffFragment.class)));
bar.addTab(bar.newTab()
.setText("Friends")
.setTabListener(new TabListener<ContactsFragment>(
this, "friends", ContactsFragment.class)));
bar.addTab(bar.newTab()
.setText("Messages")
.setTabListener(new TabListener<ConversationsFragment>(
this, "messages", ConversationsFragment.class)));
if (savedInstanceState != null) {
bar.setSelectedNavigationItem(savedInstanceState.getInt("tab", 0));
}
bar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM |
ActionBar.DISPLAY_SHOW_HOME | ActionBar.DISPLAY_USE_LOGO);
bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
}
Run Code Online (Sandbox Code Playgroud)

我试图通过更改清单文件中的以下内容来升级现有应用程序.
改变
android:versionCode="1"
android:versionName="1.0"
Run Code Online (Sandbox Code Playgroud)
至
android:versionCode="2"
android:versionName="1.1" .
Run Code Online (Sandbox Code Playgroud)
我使用相同的密钥库,但是当我尝试使用Google Play开发者控制台发布应用时,我收到一条错误消息:
"由于以下原因,无法发布此配置:可能收到版本1的所有设备都将收到版本2.某些设备有资格运行多个APK.在这种情况下,设备将收到版本较高的APK码."
我该如何升级我的应用程序.非常感谢你提前.
在大多数情况下,我希望关键事件由目前具有焦点的(子)视图处理,这是默认行为,也是我目前已经实现的.
但是,在某些非常具体的情况下,我想暂时拦截和处理所有关键事件(包括那些通常由子视图处理的事件),或者在我当前的活动中,或者在我的根视图中失败,这是无关紧要的,只要它们在全球范围内处理 - 我不关心像音量+/-这样的硬件按钮,因为无论如何都不会在我的任何子视图中处理这些按钮).
对于触摸事件,我们有onInterceptTouchEvent(),它允许ViewGroup在调度到子视图时观察触摸事件,并阻止它们所针对的子视图接收这些事件(如果需要).
不幸的是,我找不到与onInterceptTouchEvent()类似的关键事件.我错过了一些明显的东西,或者这是操作系统中的实际不对称?
当然,我可以连接每个子视图的当前键事件处理程序代码,直接调用主活动上的方法来处理事件,如果它想要,并让该活动级方法返回一个布尔值,指示是否它处理了这个事件.然后,当且仅当它调用的活动方法没有处理它时,子视图才能处理该事件.
但我希望有一种更简洁的方法可以简单地拦截流向"层次"层次到子视图的流量,就像onInterceptTouchEvent()对触摸事件一样.
当我的Android应用程序在最近的手机和平板电脑上运行时,我正在设置"熄灯"模式.在我的onCreate()方法中,我添加了:
View rootView = getWindow().getDecorView();
rootView.setSystemUiVisibility(View.STATUS_BAR_HIDDEN); // aka View.SYSTEM_UI_FLAG_LOW_PROFILE
Run Code Online (Sandbox Code Playgroud)
这比我想象的要好.在我的Android 3.2平板电脑上,状态栏以低调模式启动(条形图上的所有按钮都用点替换).如果我与条形图上的按钮交互,它将变为正常,然后返回到低调模式(例如,如果我从状态栏检查配置/通知窗口).所以看起来这更像是我的应用程序的属性,而不是直接隐藏UI的"命令".
但是,有两个角落案件没有处理.首先,如果用户点击状态栏而没有点击任何点,则栏会变为活动状态.在用户实际与栏上的某些内容进行交互之前,它永远不会回到低调模式(例如,查看通知或截取屏幕截图).因此,如果他们返回与我的应用程序进行交互,则状态栏不再处于低调模式.(Gallery应用程序似乎也有这个问题,所以也许它不仅仅是我.)第二个角落案例是来自锁定屏幕的简历.如果我点击电源按钮来锁定平板电脑,然后将其解锁并恢复应用程序,则状态栏完全可见(并且与其进行交互不会改变任何内容).(Gallery应用程序没有此问题.)
一些博客文章建议我可以设置一个处理程序来监听系统UI可见性更改,然后在UI变得可见时重新隐藏它.像这样:
rootView.setOnSystemUiVisibilityChangeListener(
new View.OnSystemUiVisibilityChangeListener() {
@Override
public void onSystemUiVisibilityChange(int visibility) {
if (visibility == View.STATUS_BAR_VISIBLE) {
game.flagUIIsVisible();
}
}
});
Run Code Online (Sandbox Code Playgroud)
在我的例子中,game对象上的方法只是设置一个标志,说明UI不可见.稍后,如果我的应用程序中有任何触摸事件(它们由同一个game对象处理),并且设置了此标志,那么我再次调用STATUS_BAR_HIDDEN调用.
但是,通过这些回调,对UI没有可见的影响.我可以看到正在从一些日志消息中调用正确的处理程序,我可以看到正在调用侦听器.
我也尝试在我的onResume路径中调用STATUS_BAR_HIDDEN调用,但这也没有什么区别.
我正在寻找信息,这是某种已知的错误,或提示Gallery应用程序可能正在做什么(假设它做了不同的事情).或者其他API尝试的建议(或其他可能相关的细节).
我正在使用libGDX,我的应用程序只有一个视图,所以非常简单.该视图也设置为全屏,没有libGDX的标题.我的清单中的targetSdkVersion设置为15.
测试应用内结算第3版已经因Google Play应用缓冲来自Google Play服务器的数据而无法预测,并且缓存过程没有详细记录.特别是,如果在用户的某个设备上进行购买,则可能无法在同一用户拥有的其他设备上立即看到它.
建议的做法是让应用程序在启动时检查所有已购买产品的库存.但有时此检查使用的缓冲数据由于在不同设备上通过同一应用程序进行的更新而已经过时,或者通过Google Checkout(例如,退款或已取消的订单).
在未启动此更新的设备上运行的Google Play应用中,在Google Play服务器上购买数据所做的更改是什么情况?
具体来说,如何在测试期间确保使用queryInventoryAsync()(TrivialDrive示例应用程序提供的IabHelper类的方法)检查返回的数据反映了目前Google Play服务器上的内容,而不是可能过时的缓冲数据?
我有兴趣了解使用特定软件包在Google Play上发布应用程序可能会限制我和其他人可以用来在将来发布应用程序的软件包的所有方法.我对Google Play系统允许的内容,Google政策允许的内容以及法律允许的内容感兴趣.
我知道并仔细注意了以下相关讨论:
这些讨论未解决的一个方面是一个应用程序是否可以具有包名称,该名称包括作为前缀的另一个应用程序的包名称,如果是,则两个应用程序是否必须由同一开发者帐户拥有.这特别影响到是否可以通过注册(不一定发布)具有包的应用程序来保留整个包名称系列(例如,以与自己拥有的域名相反的所有名称)保留的问题.这只是反向域(例如,com.naifapps)而已.
以下是一些我想了解的具体示例:
可以发布两个应用程序,其中一个使用的包是另一个包的正确前缀(例如,一个应用程序具有前缀com.naifapps,另一个具有前缀com.naifapps.candide)?如果没有,如果您在具有自己的反向域的包下发布应用程序,则可以真正限制您的未来选项,仅此而已.
在情况1中,这两个应用程序是否可能由两个不同(不相关)的开发人员拥有?如果答案是否定的,但如果由一个拥有两个将被允许单一账户,然后上传并保存有等于你自己,拥有,域名的反向包名称的虚拟应用程序,仅此而已,你可能能够有效地保留从该反向域开始的整个名称系列,以供将来使用.但是,如上面第1项所述,如果Google Play禁止共享相同软件包前缀的应用程序,那么您可能永远无法使用以您自己的域名反向开头的软件包进一步发布任何内容.
假设我拥有域名naifapps.com,并在Google Play上以com.naifapps.candide和com.naifapps.erendira的名称发布两个应用程序.然后,是否有什么可以阻止其他开发人员在应用程序包名称的开头使用相同的反向域来释放应用程序(例如,使用com.naifapps.bwahaha包)?换句话说,是我的应用程序的发布,其应用程序的包只是以反向域名开头,足以"保留"我自己帐户专用的包前缀?
我对naifapps.com域名的所有权是否足以让Google删除使用包含com.naifapps作为前缀的软件包的其他开发者发布的应用程序,如果我向Google投诉这样的应用程序似乎侵权?
如果我以外的其他人使用前缀com.naifapps发布应用程序,那么这可能阻止我作为域名naifapps.com的所有者在我发布的应用程序包中使用我自己的域的撤销(例如, com.naifapps.erendira)?