Articles of android activity

Android Media Player在后台播放,但在应用程序被杀时不会停止

我是Android新手,所以我遇到了问题。 在Android中,我希望在我的音乐播放器启动后立即播放背景音乐,并且即使活动从一个变为另一个,它也会继续播放。 我试过这段代码: MediaPlayer music = MediaPlayer.create(MainActivity.this, R.drawable.bgscore); music.start(); 但是,当用户关闭应用程序时,声音应该停止,但事实并非如此。 我怎样才能做到这一点?

Facebook要求代码

我有一个Activity应该处理来自Facebook SDK和其他自定义活动的结果。 我在哪里可以findFacebook SDK使用的requestCodes,以便不对我的活动使用相同的请求代码? 我应该能够使用requestCode在onActivityResult区分它们,因此它们必须是唯一的。

使用Fragment时,findViewById返回NULL

我是Android开发的新手,当然还有Fragments。 我想在main活动中访问我片段的控件,但’findViewById’返回null。 没有片段代码工作正常。 这是我的代码的一部分: 片段 : MainActivity的onCreate: @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); super.setContentView(R.layout.main); this.initialisePaging(); EditText txtXML = (EditText) findViewById(R.id.txtXML);} 在这一点上, txtXML为null。 我的代码中缺少什么或我该怎么办?

android截取屏幕截图

我正在开发一个Android应用程序。 我有一个活动,比如A,它用整个屏幕填充视图。在AI中按下一个按钮想要开始另一个活动,比如B,它也有一些视图和控件。 我希望活动B在屏幕外,并希望从A获取B的屏幕截图。 可能吗? 注意:我通过将绘图缓存保存到位图中来成功获取页面A的屏幕截图,但很难获取屏幕外页面的屏幕截图。

Android和Robotium – 期望额外的测试活动?

在我看来,robotium的设计方式是一次测试1个Activity而不是整个应用程序。 所以我的问题是如何测试一个期望将额外传递给它的活动? 另外我的意思是intent.putExtra(“Something”, object);

使用新的体系结构组件ViewModel在片段之间共享数据

在Last Google IO上,Google发布了一些新的Arch组件预览,其中一个是ViewModel。 在文档中, Google显示了此组件的一种可能用途: 活动中的两个或更多个片段需要彼此通信是很常见的。 这绝不是微不足道的,因为两个片段都需要定义一些接口描述,并且所有者活动必须将两者绑定在一起。 而且,两个片段必须处理尚未创建或不可见的其他片段的情况。 可以使用ViewModel对象解决这个常见的痛点。 想象一下主从细节片段的常见情况,其中我们有一个片段,其中用户从列表中选择一个项目,另一个片段显示所选项目的内容。 这些片段可以使用其活动范围共享ViewModel来处理此通信。 并显示了一个实现示例: public class SharedViewModel extends ViewModel { private final MutableLiveData selected = new MutableLiveData(); public void select(Item item) { selected.setValue(item); } public LiveData getSelected() { return selected; } } public class MasterFragment extends Fragment { private SharedViewModel model; public void onActivityCreated() { model = […]

为什么在返回父活动时始终会调用onDestroy?

我有一个非常简单的应用程序基于构建您的第一个应用程序教程。 有两个活动: MainActivity通过startActivity()调用DisplayMessageActivity 。 输入DisplayMessageActivity ,我看到: MainActivity.onStop() 正如预期的那样,但是当我按下后退按钮返回到父MainActivity ,我得到: MainActivity.onDestroy() MainActivity.onCreate(null) MainActivity.onStart() 对于这个非常简单的应用程序,活动总是被破坏。 但是根据文档 (第二个要点),典型的行为是在这种情况下停止和重新启动活动。 此外,首次启动子活动时不会发生onDestroy() ,但只会单击一次后退按钮。 两个问题: 有没有办法防止父母在常见情况下被摧毁? 为什么在这里将null传递给onCreate() ? 这可以防止我通过onSaveInstanceState()保存状态。 请注意,我已经validation设置 – >开发者选项 – >应用 – >不要保持活动未选中。 编辑: 以下是子活动与父级链接的方式: 通过DisplayMessageActivity.onOptionsItemSelected()跟踪,我可以看到它正在调用Activity.onNavigateUp() 。

意图恢复以前暂停的活动(从通知中调用)

我正在开发一个向用户显示通知的应用程序。 通知的目的是使用户在另一个活动中轻松返回活动。 我在我的应用程序中使用此代码来创建和显示通知。 notification = new Notification(R.drawable.icon, “Notify”, System.currentTimeMillis()); notification.setLatestEventInfo(this, “App name”, “App message”, PendingIntent.getActivity( this, 0, new Intent(this, Main.class), PendingIntent.FLAG_CANCEL_CURRENT)); notification.flags |= Notification.FLAG_ONGOING_EVENT; nManager.notify(0, notification); 但是当用户点击通知时,会启动相同活动的新实例,而不是之前用户使用的实例。 我认为这与PendingIntent有关,但是我找不到如何让Intent恢复以前暂停的活动实例而不是创建新实例。 谢谢。

如果已登录,请正确跳过登录活动

我的启动器图标当前启动登录活动。 我已将登录状态存储在SharedPreferences中。 有没有办法正确跳过登录活动,直接进入主要活动,没有任何 UI故障。 所有涉及onCreate()中的finish()现有解决方案都会导致登录活动标题短暂可见或其他一些短暂的空白屏幕UI故障。

在Activity.onCreate()中,为什么Intent.getExtras()有时会返回null?

这可能是一个误报,请参阅我自己的答案 。 原始问题如下: 活动有一个按钮,可以将用户带到另一个活动。 为了启动新活动,我们使用extras和onCreate()填充我们的Intent,新活动通过Intent.getExtras()从这些额外内容中读取。 我们假设返回的bundle非空,但是当发现客户崩溃报告时,getExtras()有时会返回null。 正如这个答案显示的那样 ,对额外内容进行无效保护是非常好的,但是如果你填充了intent的附加内容,那么为什么它会在以后返回null呢? 是否有更好的地方(如onResume())来阅读额外内容? 编辑:可能是因为我们没有遵循密钥所需的名称约定: 名称必须包含包前缀,例如app com.android.contacts将使用“com.android.contacts.ShowAll”之类的名称。 这是来自Intent.putExtras的javadoc 。 如果您不遵循此名称惯例会发生什么; 是甚至定义的行为? 这是相关的代码: class FromActivity extends Activity { ImageButton button; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.from_view); button = (ImageButton)findViewById(R.id.button); button.setVisibility(View.VISIBLE); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent i = new Intent(FromActivity.this, ToActivity.class); i.putExtra(ToActivity.SERVER_PARAM, …); i.putExtra(ToActivity.UUID_PARAM, …); […]