我试图在我的应用程序中处理异常。我正在尝试记录异常,然后使用Toast警告用户存在问题。我在我所有课程中都有这个扩展Activity的工作发现。活动类别之外的Android环境
但是,在没有扩展活动的任何类中,我不能使用toast方法,因为我无法获取当前上下文。有没有简单的方法来解决这个问题,或者我的班级的所有扩展活动?
我试图在我的应用程序中处理异常。我正在尝试记录异常,然后使用Toast警告用户存在问题。我在我所有课程中都有这个扩展Activity的工作发现。活动类别之外的Android环境
但是,在没有扩展活动的任何类中,我不能使用toast方法,因为我无法获取当前上下文。有没有简单的方法来解决这个问题,或者我的班级的所有扩展活动?
你只是通过上下文 当你调用自Activity类的呼叫Non-Activity
类像
YourNonActivtyClass obj = new YourNonActivtyClass(Activity.this);
吐司消息应该在应用环境中工作,即
Toast.makeText(getApplicationContext(), ...);
如果他不在活动,那么可能没有getApplicationContext()方法。另外,不需要使用这种方法。活动对象本身就是一个上下文。所以使用YourActivityName.this将会正常工作,而不是getApplicationContext(); – FoamyGuy 2012-03-15 18:05:26
特别是你的工作有什么其他结构?他们中的许多人或者已经有一个Context,或者在某个时候获得传递给他们的上下文。 – FoamyGuy 2012-03-15 17:57:02
您可以将上下文设置为成员字段并在构造函数中设置。但是这可能导致内存泄漏,请谨慎使用(避免静态引用上下文)。 – j0ntech 2012-03-15 17:57:43
我有两个类:1)RegistrationScreen,它扩展了Activity。 2)不扩展Activity的SocketClient。当用户在RegistrationScreen中提交表单时,它会创建一个新的SocketClient对象,该对象通过套接字连接进行注册(引发IOException的位)。如果成功的话,SocketClient会向RegistrationScreen类返回值,但如果它不成功,我会挣扎。我应该让SocketClient抛出异常并在RegistrationScreen中捕获它们吗? – Joseph 2012-03-15 18:01:22