我有一个BaseActivity类,我在其他活动中扩展。我在底部有一个菜单,包含5个按钮。目前,每当单击菜单按钮时我都在使用setOnClickListener,并且我在每个活动中都复制了代码。显然这不是一个好习惯。如果我必须进行任何小改动,我必须编辑每个变得麻烦的活动。所以我试图通过在BaseActivity中放置不同的方法并在xml onClick中调用该方法来优化它。
以下代码说我目前在MainActivity.this上,它将打开FindActivity.class。如果代码在MainActivity类
中,则以下内容有效Public Class MainActivity extends BaseActivity{
Intent intent = new Intent(MainActivity.this, FindActivity.class);
startActivity(intent);
}
但我想要实现的是在BaseActivity中使用上面的代码,这显然会被MainActivity扩展。
Public Class BaseActivity extends ActionBarActivity{
Intent intent = new Intent("This should be MainActivity.class", FindActivity.class);
startActivity(intent);
}
现在问题是我不确定当我在MainActivity上时如何在BaseActivity中的Intent参数中获取MainActivity.this。基本上我不知道如何获得上下文。
非常感谢任何帮助。
如果上述内容不清楚并需要更多解释,请告诉我。
提前致谢。
答案 0 :(得分:5)
每个Activity
或Service
都有自己的上下文,因此仅使用this
关键字就足以检索您要使用的上下文。
如果您的课程延伸任何类型的Activity
,请使用this
或YourClassName.this
,甚至getContext()
,getApplicationContext()
或getBaseContext()
,一切都取决于你的位置,但在你的情况下,this
或YouClass.this
就足够了。
在第一个示例中,MainActivity.this
表示Context
个对象。有关context
的内容的讨论,请参阅this。