工具的真正目的是啥:Android XML 中的上下文
Posted
技术标签:
【中文标题】工具的真正目的是啥:Android XML 中的上下文【英文标题】:What is the real purpose of tools:context in Android XML工具的真正目的是什么:Android XML 中的上下文 【发布时间】:2017-06-06 09:24:52 【问题描述】:我正在学习android,想知道为什么我在布局XML文件中找不到属性tools:context
的真正用途。
我在https://developer.android.com/studio/write/tool-attributes.html#toolscontext 的图片下看到onClick
在我们指定tools:context
之前将不适用于任何视图。
我试过了,想知道它在没有任何 tools:context
的情况下也能正常工作
我还从 *** 中读到它用于为布局选择合适的主题。但不使用tools:context
对我来说效果很好,那么这样做的真正目的是什么?
XML 布局:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/activity_main"
android:layout_
android:layout_
>
<Button
android:layout_
android:layout_
android:onClick="CallIt"
/>
</RelativeLayout>
主要活动:
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();
没有tools:context
,一切正常
【问题讨论】:
【参考方案1】:在我们指定 tools:context 之前,onClick 对任何视图都不起作用
该文档中没有任何内容提出该声明。
没有工具一切正常:上下文
正确。那是因为该文档中没有任何内容表明onClick()
仅在您拥有tools:context
时才有效。 确实说,对于快速修复,您需要 tools:context
让工具知道在哪里添加 onClick()
方法。
还从 *** 中读取它用于为布局选择合适的主题
这也是错误的。
工具的真正用途是什么:Android XML中的上下文
它为开发工具提供上下文,关于该布局将在哪里使用,以便工具可以为开发人员提供更好的帮助,例如:
更准确地呈现预览,将托管活动及其主题考虑在内 更智能的助手,例如前面提到的快速修复tools:context
是完全可选的。没有它,开发工具可以并且确实可以工作。这些工具对您的帮助可能会有所下降,但这是您的选择。
tools:context
— 或 tools
命名空间中的任何属性 — 对运行时没有影响。我没有检查,但我希望它们在打包 APK 时被剥离,因为它们在运行时没有用。
【讨论】:
那么如果我在onClick
上指定方法,那么它会在所有要调用的包中搜索该方法吗?
@Nothing:不,它会在加载布局的任何活动中搜索它(直接或间接)。如果您需要更大的灵活性,请使用the data binding framework。以上是关于工具的真正目的是啥:Android XML 中的上下文的主要内容,如果未能解决你的问题,请参考以下文章