4

Android中的Activityname.this()&有什么区别吗?this

我正在尝试使用对话框中的按钮从同一活动中打开一个活动?我getApplicationContext()有意使用。在某些手机中它可以工作,但在其他手机中它会强制关闭?

ActivityName.thisthis之间,我应该使用哪个以及为什么?

4

2 回答 2

11

Android 中的 Activityname.this() 和 this 之间有什么区别吗?

这取决于您从哪里调用它。如果您在 中Activity,而不是在侦听器或内部类中,onCreate那么就没有。他们都指的是Activity context.

如果你在里面说,onClickListener那么是的。this指的是listener你需要使用的ActivityName.this或者类似的东西

someButton.setOnClickListener(new OnClickListener()
{
    @Override
    public void onClick(View v)
    {
        Intent i = (v.getContext(), NextActivity.class);   use the button context which will be the same as the activity context
        startActivity(i);
     }
});

Dialog这与使用or时相同AlertDialog,您将要使用ActivityName.this

这是一个关于Contexts 差异的答案,但如果我能找到一个更好的答案,我会看看

一个很好的上下文解释

编辑以获得更多完整性

AFAIK,getApplicationContext()或者ActivityName.this适用于Toasts. 文档中的示例使用getApplicationContext(). 但是Toast Docs

参数 context 要使用的上下文。通常是您的 Application 或 Activity 对象。

因此,在某些情况下可能会更好,但我一直在使用Activity Context,我想我会一直使用,直到我对此进行纠正。

于 2013-09-09T18:11:10.867 回答
1

noMyActivity.this与仅在活动本身中使用时使用的东西相同,this而不是像 runnablethis那样引用可运行对象而不是上下文的东西

你应该总是使用thisor getActivity()if 在一个片段中并且永远不要使用getApplicationContext()

在这里检查你为什么不应该使用getApplicationContext()

getApplication() 与 getApplicationContext()

于 2013-09-09T18:08:26.663 回答