Articles of android activity

Android日历:onActivityResult的resultCode始终为0

我开发了一个Android应用程序,它提示日历应用程序编辑事件。 我使用startActivityForResult()打开日历。 编辑并保存事件后, resultCode onActivityResult() resultCode始终为0。 我看到许多与“onActivityResult resultCode总是返回0”相关的答案。 这是因为在第二个活动中没有使用setResult()和finish() 。 但就我而言,我正在调用Android日历应用程序(不是自定义活动)。 提示Android日历的代码: Intent intent = new Intent(Intent.ACTION_EDIT); intent.setType(“vnd.android.cursor.item/event”); //set the event details startActivityForResult(intent,1); 在保存或取消日历时触发 protected void onActivityResult(int requestCode, int resultCode, Intent data) { //resultCode always returns 0. switch(requestCode) { case 1: if (resultCode == Activity.RESULT_OK) { } } } 无论我在日历应用程序中单击“保存”还是“取消”, resultCode始终为0。 另外我需要从日历intent中获取数据。但是onActivityResult中的intent“data”也返回null。 有谁能解释为什么会这样? 有没有办法知道用户是否点击“保存”或“取消”?

启动器活动的onResume()方法被调用两次但onCreate()只被调用一次

当我的应用程序启动时,启动器活动的onCreate()方法通常只被调用一次。 但紧接着就是两次调用onResume()。 当我检查代码时,两个实例都属于同一个类,但显然只有一个具有来自onCreate()的实例成员。 但是一切都很好。 我只是好奇地试图理解为什么会这样。 有人有什么想法吗? 我正在使用SherlockFragmentActivity,这与它有什么关系吗? 我很乐意根据需要提供更多信息。 我现在还不知道还有什么相关的。 谢谢!

是否可以通过adb shell启动活动并接收其响应?

我知道您可以使用以下命令从任何应用程序通过adb 启动任何导出的活动 : am start -n com.myapp.test/.TestActivity 使用”am start”命令,还可以向活动发送额外数据(我知道如何做到这一点,这不是我在这里问的问题!)。 但是,我需要知道的是,是否还可以在完成时接收从已启动活动发回的响应数据?

为什么没有用于获取当前活动的Android API?

问题是, 我如何获得当前的活动? 已经在Stackoverflow和其他网站上被问了几十次,并且有很多提议的方法。 然而,它们都具有某种forms的缺点。 在这篇文章中,我假设Android的API中没有为此提供解决方案,例如: Application.getTask().getRootActivity() 。 如果有:-)那不是很好吗? 所以,要清楚,我不是要求答案我如何获得当前的活动? 相反,我问的是没有提供这种能力的原因。 假设每个正在运行的应用程序都有一个任务(假设任务没有被清空),并且每个这样的任务都有一个根活动,那么提供对该根活动的访问似乎很容易。 在没有提供这种访问的情况下,当它非常明确地需要时,这意味着对我而言,我不了解Android架构的基本内容。 我错过了什么? 为什么Android API不提供此信息? 对于背景,这里是一个概述已经提出的一些方法的部分。 我发现以下两个链接特别有用(下面的每个方法都在一个或两个链接中提供)。 链接 如何获取android中的当前前台活动上下文? Android:如何获取当前前台活动(来自服务)? 途径 静钩 reflection ActivityManager 其他(Instrumentation,AccessibilityService,UsageStatsManager)` ActivityManager ActivityManager方法仅提供Activity类的名称,而不是当前的Activity实例。 例如,对于Context实例c: c.getSystemService().getActivityManager() .getAppTasks().get(0).getTaskInfo() .topActivity().getClassName() reflection 我最喜欢的是_AZ提出的反思 ,但这种方法很脆弱,因为它依赖于内部结构。 我想从Android看到的是这种方法是通过开发人员可以安全依赖的标准API提供的。 静钩 最常见的方法是使用静态挂钩来保存对当前运行的Activity的引用。 钩子可以是按活动或按应用程序。 通过保存/销毁钩子的值可以避免内存泄漏(例如,在onCreate()/ onDestroy(),onStart()/ onStop(),onPause()/ onResume())。 但是,当涉及多个活动时(例如,由于生命周期重叠 – 见下文),可能会出现问题。 我实现了一个静态钩子方法,它执行以下操作(完全透明,我还没有实现#1 – 我目前正在使用per-Activity静态钩子,这是一个bug)。 提供一个扩展Application以提供钩子的类。 钩子包含一个堆栈; 堆栈中的每个节点都是一个简单的ActivityInfo类,它包含对Activity实例的引用以及该实例的状态(CREATED,STARTED,RESUMED)。 提供一个名为ActivityTracker的类,用于扩展Activity。 然后,我使用ActivityTracker扩展我的每个活动。 ActivityTracker使用其生命周期回调来向/从堆栈推送/popup自身并更新其状态 – […]

Android:无法使用Google Maps Fragment进行共享元素转换

我试图让Google Maps Fragment在两个活动之间保持不变。 我不知道如何做坚持部分,但我绝对希望地图出现在两个活动中。 为了使共享元素转换,我给了片段相同的transitionName。 我也启用了Window Transitions,我就像这样启动了Activity B: ActivityOptionsCompat options = ActivityOptionsCompat. makeSceneTransitionAnimation(this, map, getString(R.string.map)); startActivity(i, options.toBundle()); 但对于我的生活,我无法让这种转变发挥作用。 关于我可能做错的任何想法? 活动A: 活动B:

了解MvxCachingFragmentCompatActivity

我需要了解如何使用MvxCachingFragmentCompatActivity。 我在之前的问题之前已经问了这个问题,但我得到了一段示例代码,这有用但不是我需要的。 我需要的是了解如何使用它。 首先,我有一个活动,我的所有观点都是碎片。 我的重要假设是,如果我的活动被拆除并需要恢复,使用MvxCachingFragmentCompatActivity将使我能够恢复我的应用程序导航层次结构。 有人可以确认这是否正确。 如果这是正确的,我该如何使用它。 例如 我是否需要在视图模型中实现“保存和还原”状态? 开发人员还需要做什么吗? 对于缓存片段,MvxFragmentAttribute参数IsCacheableFragment实际上做了什么? 在恢复活动时,执行重新创建片段层次结构的操作是什么? 如果有关于此的一些文档会很棒。 我需要知道这一点,因为我的活动被拆除然后在我使用另一个活动进行相机function后恢复。 当Activity恢复自身时,我的片段的ViewModel为null。而且我发现Close(this)在我的视图模型中不起作用。 我确信我没有做我需要做的所有事情来完成这项工作,但我需要指导它应该如何使用。 任何帮助将不胜感激,也许是来自MvvmCross团队的人。 我真的被困在这里了。 我更喜欢描述行为,而不是指向一个样本,但两者都会很棒。 [ 更新 ]所以我构建了V4和V7 MvvmCross库的调试版本并设置了调试。 据我所知,只要你将以下属性添加到你的片段类中,就应该设置缓存你的片段。 [MvxFragment(typeof(MainActivityViewModel), Resource.Id.contentFrame, AddToBackStack = true, IsCacheableFragment = true)] [Register(“com.dummynamespace.MyFragment”)] 注意小写命名空间很重要,你的类名可以是大小写混合的。 但是,在我的活动被销毁并重新创建之后,我仍然会遇到问题。 就我而言,我实际上是在快速连续地看到我的活动被破坏并重建了不止一次。 一个例子是在活动销毁并重新创建后我无法关闭视图。 这似乎是由于GetFragmentInfoByTag(MvxCachingFragmentCompatActivity类)中的代码返回关闭视图所需的错误信息。 关闭function需要返回的IMvxCachedFragmentInfo中的ContentId,但是这会将其返回0.此外,AddToBackStack属性设置为false。 下面我列出了片段信息中返回的内容 AddToBackStack = false CacheFragment = true CachedFragment = null ContentId = 0 FragmentType = This […]

清除没有animation的Android活动堆栈(静默)

我有两个活动,A和B. 1)从活动A,您可以转到B并通过后退按钮返回A(继续)。 2)从活动A,你可以去B,做一个选择,通过重新加载它将返回到活动A. 在这里,我需要从后栈中清除活动A的上一个副本。 在第二种情况下,我使用以下意图: Intent intent = new Intent(this, MainActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); startActivity(intent); finish(); 这是有效的,但我的新活动首先被绘制,然后我可以看到旧的副本被删除 – 所以有一些相同活动的animation消失了。 是否有任何方法可以反转该行为,以便先删除旧活动,或者删除该animation? 谢谢! 编辑: 就解决方法而言,现在我将活动A设置为清单中的singleTask ,覆盖onNewIntent并重置我需要在onResume重新加载的所有对象。 这似乎工作,但我更喜欢一个干净的石板,即重新加载活动

Android活动中onCreate方法第二次实现的用法是什么?

我一直在Activity生命周期中使用onCreate方法从保存状态启动或恢复,但最近发现还有另一个包含PersistableBundle onCreate方法: @Override public void onCreate(Bundle savedInstanceState, PersistableBundle persistentState) { super.onCreate(savedInstanceState, persistentState); } 我发现自Android 21以来它已被添加。 有人可以在调用和使用时提供有关此方法的完整信息吗?

通过Twitter的Digitsvalidation电话号码后,我在最近的活动中收到了我的应用程序的两个实例

Hiii,我已经一遍又一遍地查看了Digits文档,但是找不到它。 每当我打开Digit移动validation屏幕然后关闭它时,我在最近的屏幕上得到了我的应用程序的两个实例。 以下是我设置数字的方法。 在应用程序, Fabric.with(this, new TwitterCore(authConfig), new Digits()); 在活动中, DigitsAuthButton digitsButton = (DigitsAuthButton) findViewById(R.id.btn_phone_auth); digitsButton.setAuthTheme(R.style.CustomDigitsTheme); AuthCallback authCallback = new AuthCallback() { @Override public void success(DigitsSession session, String phoneNumber) { //validated number processing }; digitsButton.setCallback(authCallback); 需要帮助。

在不同Activity中的片段之间共享ViewModel

我有一个名为SharedViewModel的ViewModel: public class SharedViewModel extends ViewModel { private final MutableLiveData selected = new MutableLiveData(); public void select(T item) { selected.setValue(item); } public LiveData getSelected() { return selected; } } 我基于Google的Arch ViewModel参考页面上的SharedViewModel示例实现它: https://developer.android.com/topic/libraries/architecture/viewmodel.html#sharing_data_between_fragments 活动中的两个或更多个片段需要彼此通信是很常见的。 这绝不是微不足道的,因为两个片段都需要定义一些接口描述,并且所有者活动必须将两者绑定在一起。 而且,两个片段必须处理尚未创建或不可见的其他片段的情况。 我有两个片段,名为ListFragment和DetailFragment 。 到目前为止,我在一个名为MasterActivity内部使用了这两个片段。 一切都运作良好。 我在ListFragment获得了ViewModel,选择了在ListFragment上使用它的值。 mStepSelectorViewModel = ViewModelProviders.of(getActivity()).get(SharedViewModel.class); 但是,现在我需要在某些情况下将ListFragment (布局到不同的设备配置)添加到名为DetailActivity的不同活动中。 有没有办法像上面的例子那样做?