使用 Context 启动另一个 Activity

发布于 2025-01-05 01:45:39 字数 392 浏览 0 评论 0原文

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

Intent i = new Intent(context, class)

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

  • 使用 MyActivity.this 或仅
  • 使用 this 使用 getApplicationContext()
  • 使用 getBaseContext()

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

那么我应该使用哪一个呢?这还重要吗?不同情况有不同的处理方式吗?

To start an Activity you need an Intent, like:

Intent i = new Intent(context, class)

So to fill in the context parameter, a couple of options are available:

  • Use MyActivity.this or just this
  • Use getApplicationContext()
  • Use getBaseContext()

And I'm sure there are one or two more options.
These options all appear in some sort of tutorial, one uses the first, the next uses the third option.

So which one should I use? Does it even matter? Is it different for different cases?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

挽手叙旧 2025-01-12 01:45:39

是的,不同情况下它有所不同,

这取决于范围。假设您要在全局类中创建一个方法,该方法扩展 Application 来创建一个在 的每个类中使用的 Toast应用程序您可以使用getApplicationContext()来创建它。

如果你想创建一个仅限于该特定 Activity 的视图,你可以使用 Activity.this

另外,如果你想在某个内部类(例如 AsyncTask)中创建一个 AlertDialog,那么您必须使用Activity.this,因为AlertDialog要链接到Activity本身。

另外,不要使用 getBaseContext(),只需使用您拥有的 Context 即可。要获取更多信息,您可以参阅 这个答案

因此,真正问题的答案是使用 Activity.this 来启动一个新的 Activity

Intent intent = new Intent(Current_Activity.this, Calling.class);
startActivity(intent);

Yes its different for different cases,

It depends on the scope. Suppose if you are creating a method in a global class that extends Application to create a Toast that is used in every class of your Application you can use getApplicationContext() to create it.

If you want to create a view that is restricted to that particular Activity you can use Activity.this

Also if you want to create an AlertDialog in some inner class say AsyncTask, then you have to use Activity.this, because the AlertDialog is to be linked to Activity itself.

Also don't use getBaseContext() just use the Context that you are having. For getting further information for the same you can see this Answer.

So, the answer to the real question is better to use Activity.this to start a new Activity.

Intent intent = new Intent(Current_Activity.this, Calling.class);
startActivity(intent);
知足的幸福 2025-01-12 01:45:39

他们肯定是不同的。这些是不同的上下文,应该在尽可能小的范围(上下文)下使用。

例如,如果我们可以使用 Activity 的上下文而不是 ApplicationContext,则应该使用活动上下文,这同样适用于应用程序上下文和基础上下文。

They are different for sure. These are different contexts, and should be used with the least possible scope(context).

For example if we can use Activity's Context instead of ApplicationContext, one should use the activity context, same applies to application context, and base context.

任谁 2025-01-12 01:45:39

你这样做....

Intent intent = new Intent();
intent.setClass(MainActivity.this, SecondActivity.class);
startActivity(intent);

You do it like this....

Intent intent = new Intent();
intent.setClass(MainActivity.this, SecondActivity.class);
startActivity(intent);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文