Articles of android activity

刷新微调

我有一个微调的意见。 该活动启动另一个popup式窗口,其中我添加或删除父级显示在微调值中的一个活动。 因此,在onActivityResult()中,通过调用我的fillSpinner()方法刷新微调器的内容,以便反映任何附加值或删除的值。 此方法的参数是之前select的值: private void fillSpinner(String value){ Cursor c = mDbHelper.getAllCategories(); startManagingCursor(c); c.moveToFirst(); String[] from = new String[]{DBAdapter.KEY_CATEGORY}; SimpleCursorAdapter scCats = new SimpleCursorAdapter( this, android.R.layout.simple_spinner_item,c,from, new int[]{android.R.id.text1}); scCats.setDropDownViewResource( android.R.layout.simple_spinner_dropdown_item); category.setAdapter(scCats); if (value != null && value != "") { category.setSelection((int)mDbHelper.categoryIndex(value)); } } 当我打开微调,它包含正确的列表(即刷新),并select正确的值。 但是,微调控件本身(处于closures状态)不会显示选定值,而是显示列表中的第一个值。 当我在debugging器中遍历代码时,在我调用setSelection()之前和之后,Spinner值是正确的(并且总是使用相同的正确ID调用它)。 但是,由于我不能离开这个事件,所以当我稍后恢复执行时,Spinner中的值就会改变。 换句话说,微调控件的显示string被改变,并且与popup活动返回时所select的项目不同。 任何想法都表示赞赏。

当屏幕closures时髦的android活动行为?

当Androidclosures屏幕并locking屏幕时,我看到一些有趣的活动stream程…我的应用程序通过常规stream程,onCreate,onStart和onResume。 然后,我让我的电话坐在那里。 当屏幕变黑时,调用onPause。 没关系。 然后5秒钟后,应用程序被终止(onStop,onDestroy)。 那也没关系 但是在调用onDestroy之后, 立即调用onCreate,onStart和onResume,即使屏幕是空白的,也要重新启动应用程序。 该应用程序有一个加载时间,它启动时会发出声音,所以当您在30秒前放下的手机开始播放声音时,会有点令人毛骨悚然。 为什么android杀了应用程序,然后重新启动它? 目标是2.1更新,手机是三星Captivate。 任何人看到这一点,并知道一个方法来阻止它?

Android – startActivityForResult之外的一个活动?

我有一个包装类(BluetoothDiscoverer)在服务中实例化。 此类获得BluetoothAdapter并在扫描邻居设备之前检查是否启用了蓝牙。 现在,如果蓝牙没有启用,我希望能够在这个类(BluetoothDiscoverer)内做到以下几点: Intent enableBluetoothIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); startActivityForResult(enableBluetoothIntent, BLUETOOTH_ENABLER); 现在我已经读了这个: 从非活动使用startActivityForResult 但我不想将我的主要活动传递给此对象,因为我想处理在BluetoothDiscoverer类中的结果(无论用户是否接受启用蓝牙)。 现在如果我使BluetoothDiscoverer成为Activity的一个子类 当startActivityForResult即将被调用时,我似乎正在得到一个NullPointerException。 我认为这是因为我需要添加一个onCreate()/ onDestroy()方法,但是这样做打破了我所做的目的,因为我需要能够调用实例化此类的服务中的BluetoothDiscoverer对象上的方法。 我还需要注册一个广播接收机,用于在启动扫描时检索相邻设备。 如果BluetoothDiscoverer类不是一个活动,我该如何注册这个接收器? 有没有解决这个问题? 谢谢安德烈亚斯

仅在一个ActionBar选项卡内的片段之间的事务

我有一个应用程序与三个选项卡(ActionBar选项卡),每一个一个片段一次。 TabListener TabsActivity Tab1 – > ListFragment1 – > ListFragment2 – > Fragment3 Tab2 – > Tab2Fragment Tab3 – > Tab3Fragment 问题是当我从ListFragment1创buildFragmentTransaction(在OnListItemClicked内)到ListFragment2,其他选项卡内的片段也更改为ListFragment2。 最后,我想只在选项卡中更改片段,并保留其他选项卡的状态。 我已经保存了状态(OnSavedInstance())。 你知道我在这里失踪了吗? 一些代码: public class TabsActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.tabs); // setup Action Bar for tabs ActionBar actionBar = getActionBar(); actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); // instantiate fragment for […]

如何完成另一项活动的活动

如果活动A与任务T1相关,而活动B与任务T2相关,那么我如何从活动B完成活动A? 我需要这个,因为我的应用程序可以从其快捷方式或通过通知开始。

在android中调用finish()方法的最佳实践?

我的大部分活动都是从服务器加载dynamic数据,当页面回到焦点时,无论如何我都会重新加载。 如果我只是要重新加载它们,那么保留它们看起来很浪费,所以如果用户从页面中导航,我想对它们调用finish()。 它令人困惑,如果一些活动,你可以按下后退button,其他人没有,因为我已经调用了finish(),所以我想知道是否它的不好的做法只是调用finish()在用户导航离开的所有活动? (我有一个导航栏在每个活动的底部,所以后退button不是必要的)。 或者,更好的做法是不要在任何活动中调用finish(),只希望它们不要放慢电话,操作系统将照顾垃圾收集? 我不熟悉Android编程,也没有Android手机,因此我不确定在这种情况下通用/最佳实践是什么,或者只是个人品味问题。 另外,是否有可能指示Android保留活动的历史logging,以便后退button仍能正常工作,但是当它们离开时完成它们,以便它们不会不必要地占用资源?

onCreate,onCreateOptionsMenu,onResume,执行的顺序是什么?

对不起,如果这个问题之前被问到…好吧无论如何,标题问,onCreateOptionsMenu执行什么时候? 之前或之后onResume? 在我的应用程序中,当活动第一次运行/打开订单将onCreate – > onResume – > onCreateOptionsMenu 但如果我改变设备的方向,它会自动调用onDestroy,从而活动将被重新创build,在这种情况下,订单将onCreate – > onCreateOptionsMenu – > onResume 我现在很困惑…有人可以解释一下吗?

点击应用程序的启动图标时会发生什么?

当你点击一个应用程序的启动图标时会发生什么? 总是发送一个新的意图,或者是有时候像从最近的任务中恢复任务一样? 如果意图被发送,它何时被发送到新的活动实例的onCreate()方法,什么时候通过现有活动的onNewIntent()路由? 假设意图通过任务中现有活动的onNewIntent()路由。 它发送到哪个活动? 最靠近顶部还是最靠近根部的那个? 它会始终被发送到应用程序启动活动的实例,还是有时会被发送到与根相同的活动? 它能否被发送到与根不相同的活动? 最后,这一切又是如何受到各项活动的启动模式(标准,单顶,单实例,单任务)的影响? 如果有谁了解这一切,请帮助我!

savedInstanceState vs getIntent()。getExtras()

我遇到了两种不同的types,让我的活动基于一些参数运行。 第一个是savedInstanceState ,另一个是getIntent.getExtras() Q1)所以我不明白的是,一旦我把捆绑到我的活动,然后开始,它应该有捆绑。 但是,如果由于某种原因再次重新创build活动,则应该重新包装相同的包。 (我对吗?) Q2)基于事实Q1是真实的,事实上,我不能只是一旦活动已经开始重写捆绑,我猜如果由于某种原因在我已经开始的活动,我想改变一些params的捆绑,我应该创build一些活动领域,并在我的活动生活中使用这些领域。 并重写saveInstanseState保存新的字段,如果由于某种原因我的活动将被重新创build。 这是真的吗? Q3)基于以上事实,在onCreate()中,Android的世界中的每一个活动都需要像这样开始: if (savedInstanceState != null) { mType = savedInstanceState.getInt("some_val1"); mCardId = savedInstanceState.getLong("some_val2"); mQuery = savedInstanceState.getString("some_val3"); mCategory = savedInstanceState.getLong("some_val4");; } else { mType = getIntent().getExtras().getInt("some_val1"); mCardId = getIntent().getExtras().getLong("some_val2"); mQuery = getIntent().getExtras().getString("some_val3"); mCategory = getIntent().getExtras().getString("some_val4"); } Q4)假设onSaveInstanceState被调用并保存了与启动该活动的原始包(getIntent.getExtras)不同的值,如果再次重新创build活动,这是否意味着saveInstanceState与getIntent.getExtras()不同?现在是一样的吗? (如果它们是相同的,那么上面的代码中的if / else没有真正的含义,因为它是相同的!)。 Q5)如果我没有重写onSaveInstanceState,但是当我创build活动时,我把它传递给一个Bundle,这是否意味着如果活动再次被重新创build,我可以得到我的原始包? (我猜这个问题会根据其他答案自行回答)

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

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