Articles of android activity

是否可以禁止从父活动访问片段的布局(视图)?

我正在研究一个库,它将提供一些input字段的片段。 这些input字段将包含使用我的图书馆的应用程序不应该访问的用户的私人信息。 因此,edittexts或者我们可以说片段的布局不能从活动(findViewById,getChildAt ..)被连接到的地方访问。 对话框或其他活动的使用是不可接受的,这个片段应该被直接包含在活动的布局中。 这在Android中甚至可能吗? 我正在考虑dynamic地创build视图,并重写getChildAt等方法来阻止访问子视图,但在我开始“玩”这个问题之前,我宁愿在这里问一些意见。

我可以注册MVP Presenter里面的片段

我一直在关注Google提供的MVPdevise模式,以重构我的应用程序。 我有一个MainActivity和许多碎片,对于每个片段创build活动似乎都很麻烦,所以我一直在考虑在片段中注册演示者。 我看到的是每个片段都注册了它自己的主持人,但是我不确定它有多less错误… 🙂 所以这里是我的演示者: public class FirstPresenter implements FirstContract.Presenter { private final FirstContract.View mView; public FirstPresenter(FirstContract.View view) { mView = view; } @Override public void start() { Log.e(TAG, "Start"); } } 这是我的片段: public class FirstFragment extends Fragment implements FirstContract.View { private FirstContract.Presenter mPresenter; @Nullable @Override public View onCreateView(LayoutInflater inflater, ViewGroup container , Bundle savedInstanceState) […]

为什么android.app.Activity不是通过devise抽象的?

为什么android.app.Activity不是通过devise抽象,如果文档/教程说,至less它的方法onCreate() 必须实现。 从http://developer.android.com/guide/components/activities.html 你必须实现这个方法。 系统在创build活动时调用这个。 即使没有明确提到,没有实现没有意义的android.app.Activity对象,或? 我明白,parrent需要在自己的onCreate()实现中执行代码,但是当onCreate()会调用一个需要开发人员实现的抽象callback方法的时候,肯定会有devise。 这个devise的例子: public abstract class Activity { public abstract void implementThis(Object o); public void onCreate(Object o){ //Do stuff implementThis(o); //Do other stuff or end. } } 我在这里错过了什么? 为什么有非抽象的Activity如果开发人员必须和需要inheritance它并提供自定义的实现?

Android中的活动之间的inheritance

我无法将inheritance的概念应用于Android活动 – 例如。 ActivityA extends Activity , ActivityB extends ActivityA ,然后如果我使用ActivityB启动,则两个 Activities(A然后是B)的onCreate()方法被调用。 我的问题是,在典型的Java中,来自ActvityA的onCreate应该被覆盖 – 但是onCreate相当于作为构造函数行事,尽pipe它是一个函数。 Android中的inheritance是如何工作的, 与其他的function,如onPause(),onResume等? 编辑:我也注意到,ActivityA可能有许多抽象方法在其onCreate()中提供的定义在ActivityB中提供。 这个怎么用 ?

NavigationDrawer活动与片段callback和应用程序业务逻辑混杂在一起

一个包含NavigationDrawer的Activity应该可以玩弄它的片段。 我的问题是,抽屉必须在应用程序的所有可能的屏幕上可用,这使得我唯一的活动MainActivity非常混乱的片段callback代码和不同种类的导航/业务逻辑。 随着应用程序的增长,在整个活动中变得越来越难,我开始考虑可能的替代方法。 新方法必须保持原始的相同的视觉行为,并消除杂乱。 除了导航抽屉事件,还有多个片段也包含导航/业务逻辑,这也是由MainActivity处理的。 例如,一个片段可能包含3个或更多的button,可以启动其他片段或执行一些交叉关注的业务逻辑。 因此,由MainActivity实现的监听器接口的数量增长,并且这个时刻达到了20个。您可能会认为它看起来不舒服或感觉不舒服。 我想我可能会解耦多个NavigationDrawer活动,以减轻维护。 这意味着更大的资源消耗和轻微的视觉效果偏差,因为新的活动只有在抽屉closures之后才会启动,与原来的方法立即改变碎片相反。 你认为这是一个坏主意吗? 如何改进? 或者有更好的解决scheme? 谢谢。 UPD改进了描述。

从locking屏幕上的服务启动活动打开屏幕,但不显示活动本身

我试图从我已经获得锁的服务开始一个活动,如下所示: Intent i = new Intent(context, MyActivity.class); i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_NO_USER_ACTION); startActivity(i); 活动清单声明如下: <activity android:name=".MyActivity" android:configChanges="orientation|screenSize|keyboardHidden|keyboard|navigation" android:excludeFromRecents="true" android:launchMode="singleInstance" android:screenOrientation="nosensor" android:showOnLockScreen="true" android:taskAffinity="" android:theme="@style/MyTheme" /> 最后, onCreate()或onAttachedToWindow() (我都尝试过),我添加以下标志: final Window win = getWindow(); win.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD); win.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON | WindowManager.LayoutParams.FLAG_ALLOW_LOCK_WHILE_SCREEN_ON); 问题是,我第一次从我的服务调用startActivity() ,屏幕打开,但活动本身不显示。 它显示locking屏幕。 每一个随后的startActivity()调用都能正常工作,但是我找不到这种奇怪行为的原因。 我已经尝试了一些build议来获得完整的wakelock而不是部分的,根据下面的回答改变清单中的标志和值: 当屏幕被唤醒并且locking屏幕不被禁用时,Android活动不显示 BroadcastReceiver被调用时如何解锁屏幕? 以编程方式在Android中打开屏幕 Android Galaxy S4 – 在locking屏幕上可见的活动 请注意,我的主题不是对话框,而是全屏活动。 任何其他的想法?

为什么人们喜欢在Android中配对CLEAR_TOP和SINGLE_TOP

标志FLAG_ACTIVITY_CLEAR_TOP查找包含活动X的任务,并清除顶部以使X恢复到其恢复状态。 FLAG_ACTIVITY_SINGLE_TOP标志只会保留顶部的一个X实例。 因此,如果我已经使用了CLEAR_TOP ,我不需要包含SINGLE_TOP :这是因为CLEAR_TOP的行为包含了SINGLE_TOP的行为。 那么为什么有这么多的样本代码将这两个包含在一起? 是否因为这些开发人员不了解CLEAR_TOP的全部function? 再一次,几乎我在网上看到的每个例子都包括在一起。 为什么冗余? 例如,如果我在任务W->X->Y->Z上为X调用CLEAR_TOP ,那么我得到W->X 另一方面,如果我要在任务W->X->Y->Z上给X调用SINGLE_TOP,那么我将以W->X->Y->Z->X ,如果我打电话给它为ZI将得到W->X->Y->Z 所以真的CLEAR_TOP没有增加任何方程式:这就像添加0到其他值。

如何在不同的过程中build立活动与服务的双向沟通​​?

我正致力于在一个活动和一个服务之间build立一个双向沟通,这个活动和服务在不同的过程中运行。 从活动中查询过程没有什么大不了的。 但我希望进程通知活动的事件。 其背后的想法是:服务独立于实际的应用程序运行。 它定期查询networking服务器。 如果在networking服务器上发现新任务,则进程应通知该活动。 我在AndDev.org发现了这个线程 ,但它似乎并没有为我工作。 我一直在用BroadcastReceiver搞乱。 我已经实现了一个应该通知活动的接口,但问题是,由于来自进程的广播是通过Intent完成的,所以监听器总是为空,因此扩展BroadcastReceiver的类将被新实例化。 我如何build立一个双向沟通? 这一定是可能的。 谢谢你的帮助, steff

一个活动=一个上下文吗?

我很困惑不同的背景和活动。 无论如何,上下文是什么? 上下文属于一个活动? 如果活动发生变化,情况是否会改变? 我有一个有多个活动的游戏。 每个部分,splashscreen,菜单,游戏屏幕等的每个活动。问题是我有一个单一的SoundManager使用soundpool作为它的声音播放器。 我想加载splashscreen中的每一个声音。 但是当我再次思考之后,情况如何呢? public void loadSound(Context context, int resId, String name) { int id = sounds.load(context, resId, priority) } 如果我在SplashScreen Activity中加载声音,如何在GameScreen Activity中播放声音? 不同的背景是不是?

以编程方式定义默认活动(当应用程序启动时)

我的应用程序由几个活动组成。 活动A是我的一些图标的主菜单。 此活动可以启动,具体取决于您按哪个图标:活动B,C,D,E或F. 这很好,很容易,活动A是默认的。 现在,我优先select允许用户开始他们最喜欢的活动。 一些用户实际上更喜欢直接获取Activity B。 我find一个解决scheme的唯一方法是在Activity A中这样做。这个解决scheme非常难看,因为Activity A总是会自动启动和closures: public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); settings = PreferenceManager .getDefaultSharedPreferences(getBaseContext()); final Intent intent = getIntent(); String action = intent.getAction(); if (Intent.ACTION_MAIN.equals(action)) { switch (Integer.valueOf(settings.getString("Activitypref", "1"))) { case 2: Intent i = new Intent(ActivityA.this, ActivityB.class); finish(); startActivity(i); break; case 3: i = new Intent(ActivityA.this, ActivityC.class); finish(); […]