Tag: android activity

什么是Android窗口?

Android中的Window是什么? 我认为Android中最顶层的级别叫Activity ,就是你看到的屏幕。 有人能告诉我什么是Android的窗口? 我们只有一个或多个他们。

onAttach()不在Fragment中调用

从AppCompatActivity启动时,My Fragment不会调用onAttach(context)方法。 在XML中创build片段: <fragment android:id="@+id/toolbar" class="package.MainToolbarFragment" android:layout_width="match_parent" android:layout_height="wrap_content" tools:layout="@layout/fragment_main_toolbar" /> 但是,如果我从support.v4.Fragment扩展它, onAttach(context)调用! 可能是什么问题呢? 当然,我可以扩展来自v4.Fragment所有片段,但我不想要它。 这是不好的做法吗? 另外项目分钟sdk 14。

在运行时覆盖资源

问题 我希望能够在运行时覆盖我的应用程序资源,例如R.colour.brand_colour或R.drawable.ic_action_start。 我的应用程序连接到将提供品牌颜色和图像的CMS系统。 一旦应用程序已经下载CMS数据,它需要能够重新皮肤本身。 我知道你要说什么 – 在运行时覆盖资源是不可能的。 除了它是有点。 特别是我从2012年发现了这个学士论文 ,它解释了基本概念 – android中的Activity类扩展了ContextWrapper ,它包含了attachBaseContext方法。 你可以重载attachBaseContext来包装你自己的自定义类的Context,它覆盖getColor和getDrawable等方法。 你自己的getColor的实现可以看起来颜色,但它想要的。 书法库使用类似的方法来注入一个自定义的LayoutInflator,它可以处理加载自定义字体。 代码 我创build了一个简单的活动,它使用这种方法来重载加载的颜色。 public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } @Override protected void attachBaseContext(Context newBase) { super.attachBaseContext(new CmsThemeContextWrapper(newBase)); } private class CmsThemeContextWrapper extends ContextWrapper{ private Resources resources; public CmsThemeContextWrapper(Context base) { super(base); […]

从Android应用程序安装程序和主屏幕启动应用程序时的活动堆栈sorting问题

仅用于testing目的,我允许我的应用APK通过URL下载和安装。 一旦在手机上下载,就可以通过Android应用程序安装程序启动,该应用程序安装程序可以让用户select将其安装到设备上,然后运行。 考虑我们是否按照上述方式下载并运行了应用程序。 我的应用程序中的主/启动器活动是一个login页面( Activity A )。 一旦用户被authentication,他们被带到应用程序的主要区域,例如Activity B 所以现在这个任务的当前活动堆栈是A > B 然后按手机上的主页button,然后进入Android主屏幕。 我通过菜单中的图标重新启动我的应用程序,并将其带到Activity A而不是Activity B 活动堆栈现在是A > B > A ,或者现在有两个单独的任务,分别是活动堆栈A > B和A 当我重新启动应用程序时,我想要返回到Activity B 在这种状态下按回来将带我回到Activity B 这种不希望的行为只发生在我通过安装程序打开应用程序时,而不是通过主屏幕/菜单打开应用程序。 我研究了各种机制如何开展活动。 当我们使用应用程序安装程序时,我们看到以下日志: INFO/ActivityManager(XXXX): Starting activity: Intent { dat=file:///mnt/sdcard/download/[my app].apk cmp=com.android.packageinstaller/.InstallAppProgress (has extras) } INFO/ActivityManager(XXXX): Starting activity: Intent { act=android.intent.action.MAIN flg=0x10000000 cmp=[my package]/[Activity A] } 通过启动器/主屏幕: INFO/ActivityManager(XXXX): […]

在Android中创buildlogin屏幕/活动的正确方法是什么?

我正在开发一个Android应用程序,需要用户在做任何事情之前login。 目前我已经创build了名为LoginScreen的主要活动,成功login后,此活动将启动另一个名为Home的活动。 但是我发现这种方法存在问题。 如果用户按下主页活动中的button,该怎么办? 我不希望用户回到login屏幕。 什么是阻止用户这样做的正确方法。 我需要处理重要新闻事件吗?

如何获得屏幕宽度和高度

我试图使用以下代码来获取Android应用程序开发中的屏幕宽度和高度: Display display = getWindowManager().getDefaultDisplay(); int screenWidth = display.getWidth(); int screenHeight = display.getHeight(); 但是我得到了NullPointerExceptionexception ,为什么? 如何获得屏幕宽度和高度呢?

android完成活动的上下文

如果我参考上下文,是否有可能完成当前的活动? 我没有提及当前的活动。

检查活动是否被调用以获得结果

是否有可能知道是否有一些活动已被调用的结果,使用startActivityForResult()或者是否只使用startActivity()开始? 我需要控制这个,如果它的要求结果的行为将是不同的。

从Fragment调用startIntentSenderForResult(Android Billing v3)

新的Android Billing v3文档和帮助程序代码在启动购买stream程时使用startIntentSenderForResult() 。 我想从Fragment开始购买stream程(并接收结果)。 例如文档build议调用 startIntentSenderForResult(pendingIntent.getIntentSender(), 1001, new Intent(), Integer.valueOf(0), Integer.valueOf(0), Integer.valueOf(0)); 和帮手代码调用 mHelper.launchPurchaseFlow(this, SKU_GAS, 10001, mPurchaseFinishedListener, "bGoa+V7g/yqDXvKRqq+JTFn4uQZbPiQJo4pf9RzJ"); 它调用startIntentSenderForResult() 。 问题是,调用startIntentSenderForResult()会导致onActivityResult()在父Activity上调用,而不是从IabHelper所在的Fragment调用。 我可以在父Activity接收onActivityResult() ,然后手动调用Fragment上的onActivityResult() ,但有没有办法从Fragment调用startIntentSenderForResult() ,直接返回Fragment的onActivityResult() ?

什么时候调用onSaveInstanceState()和onRestoreInstanceState()?

下图(来自官方文档 )描述了Android活动的众所周知的生命周期 : 另一方面,当系统销毁活动(例如,因为需要回收内存)时,活动状态有时会通过onSaveInstanceState()和onRestoreInstanceState()方法自动保存和恢复 ,如图所示由下图(也来自官方文档 ): 我知道onSaveInstanceState() 并不总是被调用,当一个活动即将被销毁。 例如,如果由于用户按下了“返回”button而被销毁,则活动状态不被保留。 但是在状态被保存和恢复的情况下, onSaveInstanceState() / onRestoreInstanceState()被调用, 什么时候被调用 ? 例如,根据上面的图, onRestoreInstanceState()可以在onStart()之前,或onStart()之后, onResume()之前或onResume()之后onStart() 。 同样, onSaveInstanceState()存在几种可能性。 那他们什么时候准确地打电话? 理想情况下,我希望看到一个组合图,显示活动生命周期状态和保存/恢复方法 (如果存在的话)。