Articles of android activity

在活动之间保留片段状态

它可以在活动之间保留Fragment吗? 假设我有活动A ,片段F_Left放在左边,片段F_Right放在右边。 如果我想发布一个新的活动并保持片段F_Left …我该怎么办? 我可以在活动之间保留Fragment F_Left状态吗? 请注意,我想启动一个新的Activity,因为Fragment F_Left是我的应用程序菜单,Fragment F_Right完全改变了用户操作的上下文…而且我的应用程序有很多操作,所以每次操作都有一个Activity是有意义的。 我知道它可以在一个Activity保留Fragment ,但是由于Fragment生命周期与容器Activity密切相关,我不知道这是否可能在Activities之间保持Fragment状态。

ImageView.getWidth()返回0

我得到imageView的宽度0.下面是代码。 xml文件: 活动: @Override protected void onResume() { super.onResume(); ImageView img = (ImageView) findViewById(R.id.img); Log.d(TAG, “width : ” + img.getWidth()); } 我不想使用下面的代码,因为我需要将这些代码放在很多地方。 ViewTreeObserver vto = img.getViewTreeObserver(); vto.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() { public boolean onPreDraw() { ImageView img = (ImageView) findViewById(R.id.img); Log.d(TAG, “width : ” + img.getWidth()); return true; } }); 我的解决方法:我实际上后来不需要在活动中添加此代码。 我将它添加到非活动类而不是ImageView的宽度我使用了Bitmap图像的宽度,现在没有这个问题。

强制应用程序从第一个Activity重新启动(当权限被拒绝时)

众所周知,当我们在Android 6.0中拒绝运行时的权限并从最近的菜单中恢复应用程序时,应用程序进程将被终止,应用程序将被强制重新启动 。 据称这是为了防止任何安全问题: 值得注意的是,当恢复时, 应用程序将从我们将其保留的最后一个Activity重新启动。 操作系统显然跟踪用户访问的最后一个Activity 。 不幸的是,这是一个问题,因为它打破了业务逻辑的流程。 不允许用户以这种方式中途访问应用程序。 我的问题是,有没有办法强制应用程序从应用程序的第一个Activity重新启动,而不是用户将其保留的那个? 是否有与应用程序重启/进程终止/权限切换相关的回调? 这是一种错误的做法吗? 如果是这样,怎么样? 什么是正确的方法? 这种行为当然在以前被观察到: 1. Android预览M:在权限授予后重新创建活动 2. 在启用/禁用Android M nexus 6设置的权限后,应用程序被杀死 3. Android Marshmallow:运行应用程序的权限更改 4. 按“重置应用程序首选项”后,我的应用程序的所有权限都被撤消 5. Android 6权限 – 在设置中切换权限时崩溃并返回应用程序

Android:如何将接口从一个活动发送到另一个活动

我有这样的界面: public interface MyInterface { public void aMethod(); } 我的自定义对象: public class MyObject { private Context context; private MyInterface inter; public MyObject(Context context) { this.context = context; this.inter = (MyInterface) this.context; inter.aMethod(); } } 主要活动: public class MainActivity extends Activity implements MyInterface { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); MyObject my = new […]

为什么我会想要`setRetainInstance(false)`? – 或 – 处理设备旋转的正确方法

如果我错了,请纠正我。 这是一个澄清问题,因为我没有在任何地方明确写过它。 在Android 4中,您可以在Fragment上调用setRetainInstance(true) ,以便在配置更改(这基本上意味着设备旋转)时,不会破坏Fragment java对象并且不会创建它的新实例。 也就是说,保留了实例。 由于您不必处理onRetainNonConfiguration State Instance()并将所有数据捆绑在一起,因此可以将其传递给新的Fragment (或Activity )实例,因此这比Android 1-3更加明智且不那么令人愤怒。再次分拆。 这基本上是你期望发生的事情,并且可以说它从一开始就应该如何适用于Activity 。 使用setRetainInstance(true) ,还可以按预期重新创建视图( onCreateView()被调用)。 我假设(未测试)资源分辨率( layout与layout-land )有效。 所以我的问题是双重的: 为什么从一开始就没有这样的Activities 。 为什么这不是默认值? 有没有理由为什么你真的希望你的Fragment在旋转时被毫无意义地破坏和重建? 因为我想不到任何。 编辑 澄清我将如何做到: class MyFragment extends Fragment { // All the data. String mDataToDisplay; // etc. // All the views. TextView mViewToDisplayItIn; // etc. @Override public void onCreate(Bundle savedInstanceState) […]

按Back会导致Activity完成()吗?

我听说按下后退按钮基本上会导致当前的Activity finish() 。 总是这样吗? 看起来就像它将Activitypopup堆栈的方式一样。 我不太确定的一种情况是当任务中的根活动被反击时。 我目前正在经历一种非常奇怪的效果,描述如下: 在加载我的应用程序时,第一个Activity用于初始化,一旦完成,它将调用我的主Activity(TabActivity)。 这个第一个init活动在Manifest中设置了android:noHistory =“true”,所以从我的主Activity中按回来将不会回到那个。 它发往启动器。 当我第二次在Launcher中单击我的应用程序时,初始化活动再次加载,并在完成后加载主Activity。 几乎在紧接着之后,它会加载我的主Activity的第二个实例。 但是,只有在应用程序已经运行一次之后,才能通过从主Activity中按BACK退出。 它会在以后强制退出应用程序或从IDE加载新版本。 基于此,我怀疑某种Activity实例正在四处闲置并被重用,因为它只发生在第二次+运行应用程序时(并使用BACK退出 – 使用HOME只返回到应用程序的最后状态,没什么大不了)。 任何人都有任何想法?

有必要在每个活动中初始化Firebase Analytics吗?

我不想将任何特殊日志发送到Firebase Analytics控制台,只需检查哪些屏幕是用户花费更多时间等等。 当我使用AnalyticsTracker时,必须在任何地方添加它,因此您可以使用Tracker.xml文件设置每个屏幕的特定名称。 官方文件说: 将Firebase Analytics的依赖项添加到您的应用级build.gradle文件中: compile ‘com.google.firebase:firebase-core:9.2.1’ 在活动顶部声明FirebaseAnalytics对象: private FirebaseAnalytics mFirebaseAnalytics; 然后在onCreate()方法中初始化它: mFirebaseAnalytics = FirebaseAnalytics.getInstance(this); 所以我想我在每个想要获取数据的页面都这样做,不是吗?

如何在Activity中使用getListView()?

在ListActivity中可以使用this.getListView().addFooterView(footerView); 但如果我使用Activity它不能使用this.getListView() 我该怎么办?

模式何时使用活动过渡与动态碎片

在Android活动与片段中如何处理UI转换有任何模式吗? 我目前正在寻找一个在Landscape中最多有3列的UI。 我希望用户界面从屏幕上的1列开始,然后在第二列中选择移动的内容,然后在平板电脑和手机上点击第3个第二个淡入淡出的内容并淡出第1列在手机上。 我想知道什么时候我应该这样做作为一个活动过渡,当我应该使用片段与出现的视图。 据我所知,片段可以转移到其他活动,所以我的选择是实现具有静态列布局的活动,然后转换将片段与它们一起使用,或者让一个Activity包含所有3列,并让Activity管理出现的片段。 这两种方法都可行,但我对两种解决方案的多种角度都有利有弊。 有两个问题类似于我的要求,但不完全回答我的问题 带有Fragments和Separate活动的两个面板UI Android Honeycomb:布局问题 – 隐藏/显示FrameLayouts

使用非生产活动进行Android Studio测试

在Android Studio之前,测试和Android应用程序涉及一个单独的Android项目,在构建生产时会被忽略。 使用Android Studio,生产代码和测试代码存在于同一个项目中,该项目本身只有一组其他内容(清单,资产,资源)。 在这种情况下,我如何定义仅用于测试的自定义Activity? 对于允许启动任何Activity的Android,必须在清单中声明它。 有没有办法解决这个限制? 如何指示Android加载仅测试活动而不污染项目的生产方面?