Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我是否应该使用“_活动=此&引用;?_Java_Android_Android Activity - Fatal编程技术网

Java 我是否应该使用“_活动=此&引用;?

Java 我是否应该使用“_活动=此&引用;?,java,android,android-activity,Java,Android,Android Activity,我应该使用“\u activity=this;”吗 我在示例代码中多次看到_活动被引用。所以,我武断地认为这看起来是一个很好的实践,并且在我的所有代码中使用了一段时间(超过一年)。但是,在我开始传播这个词之前,我想找到一些合适的文档,说明使用全局(活动局部)上下文变量是否是好的做法 有人有想法/想法/链接吗?你知道有什么优点和缺点吗 到目前为止,我发现的一个资源似乎是,有好的时候,也有坏的时候 我知道我可以使用这个或主活动。这个,但这不是问题所在 …以防万一你不知道我在说什么,这里有一个现场制作

我应该使用“
\u activity=this;
”吗

我在示例代码中多次看到_活动被引用。所以,我武断地认为这看起来是一个很好的实践,并且在我的所有代码中使用了一段时间(超过一年)。但是,在我开始传播这个词之前,我想找到一些合适的文档,说明使用全局(活动局部)上下文变量是否是好的做法

有人有想法/想法/链接吗?你知道有什么优点和缺点吗

到目前为止,我发现的一个资源似乎是,有好的时候,也有坏的时候

我知道我可以使用
这个
主活动。这个
,但这不是问题所在

…以防万一你不知道我在说什么,这里有一个现场制作的令人不安的例子:

public class MainActivity extends Activity {
    MainActivity _activity;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        _activity = this; // TODO: Find out if this is good practice?
        setContentView(R.layout.activity_main);
    }

    public void onClickButton(View v) {
        Toast.makeText(_activity, "Five boxing wizards", Toast.LENGTH_LONG).show();

        button2.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                Toast.makeText(_activity, "asdf", Toast.LENGTH_LONG).show();
            }
        });
    }
}

编辑:评论的另一个附带问题:举手表决,谁实际使用了
\u活动?

这不是好的做法。在大多数情况下,只需使用
this
,在创建匿名子类等时使用
MainActivity.this


我想问你自己一个正确的问题是,“添加这个成员变量对我有什么帮助吗?”或者“我能用
\u活动
做些什么,而我不能用
这个
。我可以告诉你答案是“没有”,但你应该自己决定这是否是真的。

不,这不好。如果我在阅读代码,我知道“这”意味着什么,但如果我看到我需要调查。

这不是一个好的做法

除了无法实现任何目标(直接使用
无法实现的目标):

  • 它使父对象变大(通过一个引用)
  • 它可能会稍微慢一点,而且
  • 它使你的代码更加脆弱;e、 g.如果有人意外地为变量指定了不同的值

我认为代码可读性较差,但您可能不同意这一点。

只有当外部类不是活动,但您需要活动时,这才有意义。例如,如果您想在自己的文件中定义onclicklistener,除了创建不必要的引用之外,还需要传入并存储引用(注意不要像note;)一样太泄漏(因为实例也可以通过
this
关键字或
MainActivity获得。this
,不鼓励使用带下划线前缀的字段名,因为为什么您需要引用对象本身中的对象?您是否考虑对其进行
静态
引用?也许我不应该这样做。)vial。我将编辑它,使按钮位于它自己的对象中。我会在大文件中使用引用,可能是子类。在这些情况下,只需使用
MainActivity。这
。当您有一个同样可访问的引用时,无需保留额外的引用。起初,我也不知道
\u活动
是什么。但是,在看了这么多次,包括在谷歌的示例代码中,我现在知道它的意思了。在谷歌的示例代码中,在哪里?即使命名约定不正确,也应该是mActivity()