使用Context启动另一个Activity

时间:2012-02-10 12:32:57

标签: android android-context

要启动活动,您需要一个Intent,例如:

Intent i = new Intent(context, class)

因此,要填写上下文参数,可以使用以下几个选项:

  • 使用MyActivity.thisthis
  • 使用getApplicationContext()
  • 使用getBaseContext()

我确信还有一两个选项。 这些选项都出现在某种教程中,一个使用第一个,另一个使用第三个选项。

那我应该使用哪一个?它甚至重要吗?不同的情况有什么不同吗?

3 个答案:

答案 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);