要启动活动,您需要一个Intent,例如:
Intent i = new Intent(context, class)
因此,要填写上下文参数,可以使用以下几个选项:
MyActivity.this
或this
getApplicationContext()
getBaseContext()
我确信还有一两个选项。 这些选项都出现在某种教程中,一个使用第一个,另一个使用第三个选项。
那我应该使用哪一个?它甚至重要吗?不同的情况有什么不同吗?
答案 0 :(得分:15)
是的,不同的情况有所不同,
这取决于范围。假设您要在全局类中创建一个方法,extends
Application
创建一个Toast
,用于Application
的每个类,您可以使用getApplicationContext()
创造它。
如果要创建仅限于该特定活动的视图,可以使用Activity.this
另外,如果你想在某个内部类中创建一个AlertDialog,说AsyncTask
,那么你必须使用Activity.this
,因为AlertDialog
要链接到Activity
本身。
另外,请不要使用getBaseContext()
只使用您拥有的Context
。要获得相同的更多信息,您可以看到this Answer
。
因此,真正问题的答案最好是使用Activity.this
来启动新的Activity
。
Intent intent = new Intent(Current_Activity.this, Calling.class);
startActivity(intent);
答案 1 :(得分:4)
他们肯定是不同的。这些是不同的上下文,应该尽可能使用范围(上下文)。
例如,如果我们可以使用Activity的Context而不是ApplicationContext,那么应该使用活动上下文,同样适用于应用程序上下文和基本上下文。
答案 2 :(得分:-1)
你这样做....
Intent intent = new Intent();
intent.setClass(MainActivity.this, SecondActivity.class);
startActivity(intent);