工具的真正目的是什么:Android XML中的上下文

时间:2017-01-21 13:07:30

标签: android xml

我正在学习android并想知道为什么我在布局XML文件中找不到属性tools:context的真正目的。

我在onClick图片下面看tools:context,在我们指定tools:context之前tools:context不适用于任何视图。

我试过并且想知道它没有任何<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" > <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="CallIt" /> </RelativeLayout> 工作 我还从stackoverflow中读到它用于为布局选择适当的主题。但是如果不使用package com.something.testingwith42; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Toast; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void CallIt(View view){ Toast.makeText(this, "Checking", Toast.LENGTH_LONG).show(); } } 它对我来说工作正常,那么它的真正目的是什么呢?

XML布局:

tools:context

主要活动:

    Product (table 1)
{
    Product ID
    Product Name
}

    Tags (table 2)
{
    Tag ID
    Higher Level tag ID
    Description
    Value
    Product ID
}

没有Schema::table('users' function(Blueprint $table){ $table->string('role')->default('customer'); });

,一切正常

1 个答案:

答案 0 :(得分:10)

  在我们指定工具之前,

onClick不适用于任何视图:context

该文件中没有任何内容可以提出这一说法。

  

没有工具,一切都运转正常:上下文

正确。这是因为在该文档中没有说明onClick()只有tools:context才有效。它确实表示,对于快速修复,您需要tools:context来获取工具以了解添加onClick()方法的位置。

  

还从stackoverflow中读取它用于为布局选择适当的主题

这也是不正确的。

  

工具的真正目的是什么:Android XML中的上下文

它提供了开发工具的上下文,以及将使用此布局的位置,以便工具可以为开发人员提供更好的帮助,例如:

  • 更准确地呈现预览,将托管活动及其主题考虑在内
  • 更智能的助手,例如前面提到的快速修复

tools:context完全是可选的。开发工具可以在没有它的情况下工作。这些工具可能会为您提供一些降级的帮助,但这是您的选择。

tools:context - 或tools命名空间中的任何属性 - 在运行时不会产生任何影响。我没有检查过,但我希望在打包APK时它们甚至会被剥离,因为它们在运行时没用。