Questions tagged «android-activity»

有关在Android中创建或管理“活动”的问题。在Android应用程序中,活动是提供用户界面的组件,允许用户执行某些操作。简单的例子是:拨打电话,拍照,发送电子邮件或查看地图。

13
实施社交活动流的最佳方式是什么?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引文回答。 已关闭6年。 改善这个问题 我很想听听您的意见,这是实施社交活动流的最佳方法(Facebook是最著名的例子)。涉及的问题/挑战是: 不同类型的活动(发布,评论..) 不同类型的对象(帖子,评论,照片..) 1-n位用户扮演不同的角色(“用户x在用户Z帖子上回复了用户y的评论”) 相同活动项目的不同视图(“您评论..”与“您的朋友x评论”与“用户x评论..” =>“评论”活动的3种表示形式) 等等,尤其是如果您将其高度复杂化时,例如Facebook,例如,将多个活动项合并为一个(“用户x,y和z在该照片上发表了评论” 关于模式,纸张等的任何想法或指针,关于实现这种系统,数据模型等的最灵活,有效和强大的方法。 尽管大多数问题与平台无关,但我最终还是有可能在Ruby on Rails上实现这样的系统


13
如何让Android Service与Activity通信
我正在编写我的第一个Android应用程序,并试图使我了解服务和活动之间的通信。我有一个将在后台运行的服务,并执行一些gps和基于时间的日志记录。我将有一个活动,该活动将用于启动和停止服务。 因此,首先,我需要能够确定在启动活动时服务是否正在运行。这里还有其他问题,所以我想我可以弄清楚(但随时提供建议)。 我的真正问题是:如果活动正在运行且服务已启动,则我需要一种使服务向活动发送消息的方法。此时的简单字符串和整数-主要是状态消息。这些消息不会定期发生,因此,如果有其他方法,我认为轮询服务不是一个好方法。我仅在用户启动活动后才需要这种通信-我不想从服务中启动活动。换句话说,如果启动活动并且服务正在运行,那么当发生有趣的事情时,您将在活动UI中看到一些状态消息。如果您不启动活动,则不会看到这些消息(它们不是那么有趣)。 看来我应该能够确定Service是否正在运行,如果可以,则将Activity添加为侦听器。然后在“活动”暂停或停止时将“活动”作为侦听器删除。真的有可能吗?我能确定的唯一方法是让Activity实现Parcelable并构建一个AIDL文件,这样我就可以通过服务的远程接口传递它。但是,这似乎有点过分,而且我不知道Activity应该如何实现writeToParcel()/ readFromParcel()。 有没有更简单或更好的方法?谢谢你的帮助。 编辑: 对于以后对此感兴趣的任何人,都可从Google的示例代码中找到示例代码,该示例代码通过AIDL在以下示例目录中进行处理:/apis/app/RemoteService.java

8
如何防止自定义视图因屏幕方向变化而丢失状态
我已经成功实现onRetainNonConfigurationInstance()了主要功能,Activity可以在屏幕方向变化中保存和还原某些关键组件。 但是似乎,当方向改变时,我的自定义视图正在从头开始创建。这是有道理的,尽管对我而言这很不方便,因为相关的自定义视图是X / Y图,并且绘制的点存储在自定义视图中。 是否有巧妙的方法来实现类似于onRetainNonConfigurationInstance()自定义视图的内容,还是只需要在自定义视图中实现允许我获取并设置其“状态”的方法?

24
如何以编程方式“重启” Android应用程序?
首先,我知道不应真正终止/重启Android上的应用程序。在我的用例中,我想在服务器将特定信息发送到客户端的特定情况下,将应用程序恢复出厂设置。 用户只能使用一个应用程序实例登录到服务器上(即,不允许使用多个设备)。如果另一个实例获得了“登录”锁定,则该用户的所有其他实例都必须删除其数据(恢复出厂设置),以保持一致性。 可能会强行获得该锁,因为用户可能会删除该应用程序并重新安装它,这将导致生成不同的实例ID,并且用户将无法再释放该锁。因此可以强行获得锁。 由于这种可能性,我们需要始终在具体实例中检查它是否具有锁。这几乎是在对服务器的每个请求上完成的。服务器可能会发送“错误的锁ID”。如果检测到该错误,则客户端应用程序必须删除所有内容。 那是用例。 我有一个ActivityA,它根据sharedPrefs值启动登录ActivityL或应用程序的主ActivityB。启动L或B后,它会自行关闭,因此只有L或B在运行。因此,在用户已登录的情况下,B现在正在运行。 B开始。C呼吁startService为IntentServiceD.导致这个堆栈: (A)> B> C> D 从D的onHandleIntent方法将事件发送到ResultReceiverR。 R现在通过为用户提供一个对话框来处理该事件,他可以在其中选择将工厂重置为应用程序(删除数据库,sharedPrefs等)。 恢复出厂设置后,我想重新启动应用程序(以关闭所有活动),仅再次启动A,然后启动登录ActivityL并完成自身: (A)> L 对话框的onClick方法如下所示: @Override public void onClick(DialogInterface dialog, int which) { // Will call onCancelListener MyApplication.factoryReset(); // (Deletes the database, clears sharedPrefs, etc.) Intent i = new Intent(MyApp.getContext(), A.class); i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); MyApp.getContext().startActivity(i); } 这就是MyApp课程: public class …




12
在不同活动中使用相同的导航抽屉
我做了一个工作的导航抽屉,就像在developer.android.com网站上的教程中显示的那样。但是现在,我想使用一个在NavigationDrawer.class中创建的导航抽屉,用于我的应用程序中的多个Activity。 我的问题是,如果这里有人可以做一点教程,它说明了如何将一个导航抽屉用于多个活动。 我首先在这个关于多个活动的 Answer Android导航抽屉中阅读了它 但是在我的项目上不起​​作用 public class NavigationDrawer extends Activity { public DrawerLayout drawerLayout; public ListView drawerList; private ActionBarDrawerToggle drawerToggle; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); drawerToggle = new ActionBarDrawerToggle((Activity) this, drawerLayout, R.drawable.ic_drawer, 0, 0) { public void onDrawerClosed(View view) { getActionBar().setTitle(R.string.app_name); } public void …

8
Android-如何替代“后退”按钮,使其无法完成我的活动?
我目前有一个活动,当它显示时,一个通知也将显示在通知栏中。 这样,当用户按下主页时,活动被推到后台,他们可以通过通知返回活动。 当用户按下“后退”按钮时,会出现问题,我的活动被销毁,但通知仍然保留,因为我希望用户能够按回去,但仍然能够通过通知进入活动。但是,当USER尝试执行此操作时,我会得到Null指针,因为它试图开始一项新活动,而不是恢复旧活动。 所以从本质上讲,我希望“后退”按钮的作用与“主页”按钮完全相同,这是到目前为止我尝试过的方法: @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (Integer.parseInt(android.os.Build.VERSION.SDK) < 5 && keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { Log.d("CDA", "onKeyDown Called"); onBackPressed(); } return super.onKeyDown(keyCode, event); } public void onBackPressed() { Log.d("CDA", "onBackPressed Called"); Intent setIntent = new Intent(Intent.ACTION_MAIN); setIntent.addCategory(Intent.CATEGORY_HOME); setIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(setIntent); return; …

11
在Android应用程序中使用Intent显示其他活动
在我的Android应用程序中,我有两个活动类。我在第一个按钮上有一个按钮,当我单击它时想显示第二个按钮,但是出现错误。这些是类: public class FirstActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Button orderButton = (Button)findViewById(R.id.order); orderButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent = new Intent(FirstActivity.this, OrderScreen.class); startActivity(intent); } }); } } 单击按钮时应显示的第二个类,但从不显示: public class OrderScreen extends Activity { @Override public void onCreate(Bundle …

8
安卓 片段getActivity()有时会返回null
在开发人员控制台错误报告中,有时我会看到NPE问题的报告。我不明白我的代码有什么问题。在模拟器和我的设备上,应用程序无需强制关闭即可正常运行,但是,某些用户在调用getActivity()方法时会在片段类中获得NullPointerException。 活动 pulic class MyActivity extends FragmentActivity{ private ViewPager pager; private TitlePageIndicator indicator; private TabsAdapter adapter; @Override public void onCreate(Bundle savedInstanceState) { pager = (ViewPager) findViewById(R.id.pager); indicator = (TitlePageIndicator) findViewById(R.id.indicator); adapter = new TabsAdapter(getSupportFragmentManager(), false); adapter.addFragment(new FirstFragment()); adapter.addFragment(new SecondFragment()); indicator.notifyDataSetChanged(); adapter.notifyDataSetChanged(); // push first task FirstTask firstTask = new FirstTask(MyActivity.this); …

14
getActivity()在Fragment函数中返回null
我有一个带有这样的公共方法的片段(F1) public void asd() { if (getActivity() == null) { Log.d("yes","it is null"); } } 是的,当我从“活动”中调用它时,它为null ... FragmentTransaction transaction1 = getSupportFragmentManager().beginTransaction(); F1 f1 = new F1(); transaction1.replace(R.id.upperPart, f1); transaction1.commit(); f1.asd(); 一定是我做错了什么,但我不知道那是什么

10
画布上的Android Center文本
我正在尝试使用下面的代码显示文本。问题是文本没有水平居中。当我为设置坐标时drawText,它将在此位置设置文本的底部。我希望绘制文本,以便文本也水平居中。 这是进一步显示我的问题的图片: @Override protected void onDraw(Canvas canvas) { // TODO Auto-generated method stub super.onDraw(canvas); //canvas.drawRGB(2, 2, 200); Paint textPaint = new Paint(); textPaint.setARGB(200, 254, 0, 0); textPaint.setTextAlign(Align.CENTER); textPaint.setTypeface(font); textPaint.setTextSize(300); canvas.drawText("Hello", canvas.getWidth()/2, canvas.getHeight()/2 , textPaint); }


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.