Android开发:如何在Java中使用Kotlin Android Extensions跳过findViewById?
在Java代码中使用Kotlin Android Extensions(省略findViewById)
嘿,我来给你捋清楚怎么用Kotlin Android Extensions在Java代码里省掉烦人的findViewById操作,步骤简单明了,跟着走就行:
第一步:配置项目插件
首先得在模块级的build.gradle(一般是app/build.gradle)里启用Kotlin Android Extensions插件:
- 旧版Gradle写法,在文件顶部添加:
apply plugin: 'kotlin-android-extensions'
- 新版Plugins块写法,在plugins代码块里加入:
plugins { id 'com.android.application' id 'kotlin-android' id 'kotlin-android-extensions' // 添加这一行 }
配置完记得同步Gradle项目,让插件生效。
第二步:在Activity中直接使用(无需findViewById)
- 先确保布局文件里要操作的View都设置了
android:id属性,比如:
<!-- activity_main.xml --> <TextView android:id="@+id/tv_greeting" android:layout_width="wrap_content" android:layout_height="wrap_content" />
- 回到Java的Activity代码里,你完全不需要写
findViewById(R.id.tv_greeting)了!插件会自动生成对应的静态方法,你可以通过静态导入直接调用:
import static com.yourpackage.MainActivityKt.getTv_greeting; // 替换成你的实际包名和Activity名 import android.widget.TextView; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 直接获取View,一步到位 TextView greetingTv = getTv_greeting(this); greetingTv.setText("Hello from Kotlin Android Extensions!"); } }
要是不想用静态导入,也可以直接通过类名调用:MainActivityKt.getTv_greeting(this)。
小提醒:目前Google官方已经推荐用ViewBinding或者DataBinding替代Kotlin Android Extensions了,因为这个插件已被标记为废弃状态。不过如果你的项目还在维护旧代码,上面的方法完全可行。
内容的提问来源于stack exchange,提问作者Rizwan Waqar
相关产品推荐
相关产品推荐

