在API 17中添加的方法也在较低的API级别中工作

在API 17中引入的AutoCompleteTextView setText(CharSequence text, boolean filter)方法似乎也适用于较低的Android版本。 我期待它在2.3与NoSuchMethodError设备崩溃,但它只是工作正常。 这不是一个真正的问题,但我只是好奇,知道它是如何工作:)

这是我的代码 –

 <AutoCompleteTextView android:id="@+id/autoCompleteTextView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_below="@+id/textView1" android:textColor="@android:color/black" android:ems="10" android:text="AutoCompleteTextView" > <requestFocus /> </AutoCompleteTextView> 

….

 import android.os.Bundle; import android.support.v7.app.ActionBarActivity; import android.widget.AutoCompleteTextView; public class MainActivity extends ActionBarActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); AutoCompleteTextView autoCompleteTextView = (AutoCompleteTextView) findViewById(R.id.autoCompleteTextView1); //method introduced in API 17!! autoCompleteTextView.setText("Example text", false); } } 

Solutions Collecting From Web of "在API 17中添加的方法也在较低的API级别中工作"

当Google说API级别17中引入了某些内容时,所有这些意味着它已经公开可用,并logging在API级别17中。

从Android的第一天起,实际的实现可能就已经存在了,但是开发人员使用特殊的注释或者仅仅使用private来隐藏它。

编辑:下面是姜饼源代码的实际方法签名+文档,显示了这种加注的使用

 /** * Like {@link #setText(CharSequence)}, except that it can disable filtering. * * @param filter If <code>false</code>, no filtering will be performed * as a result of this call. * * @hide Pending API council approval. */ public void setText(CharSequence text, boolean filter)