使用Context启动另一个Activity

nha*_*man 17 android android-context

要启动一个Activity,你需要一个Intent,比如:

Intent i = new Intent(context, class)
Run Code Online (Sandbox Code Playgroud)

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

  • 使用MyActivity.this或只是this
  • 使用 getApplicationContext()
  • 使用 getBaseContext()

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

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

Lal*_*ani 15

是的,不同的情况不同,

这取决于范围.假设您要在全局类中创建一个方法extends Application来创建一个ToastApplication您可以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);
Run Code Online (Sandbox Code Playgroud)