[英]Is there any solution to use only 1 findViewById in different methods
我有两种不同的方法。
方法a 将显示textview1。 方法 b 也会显示 textview1。
在这两种方法中,我都需要包含 findViewById(R.id.textview1)。 因此需要在代码中放置两次 findViewById。
// 如果您使用的是 Kotlin,请在您的应用模块 Gradle 中将此插件与 kotlin 库一起应用
apply plugin: 'kotlin-kapt'
kapt {
generateStubs = true
}
// 然后你可以在 XML 布局中给出视图的名称,而不必初始化视图,例如 ..
// xml 视图
<TextView
android:id="@+id/tv_location"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:paddingStart="8dp"
android:singleLine="true"
android:textSize="14sp" />
// 现在在 kotlin 类中
tv_location.text = "Kolkata,India"
//try this
使用黄油刀库:
class Activity {
@BindView(R.id.textview1)
TextView view1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setContentView(R.layout.activity_home);
ButterKnife.bind(this);
}
您现在可以在此活动中以任何方法访问view1
。
您可以将 textview 声明为全局变量。 然后您可以在该活动或类或片段中的任何位置使用该变量。
public class Main2Activity extends AppCompatActivity {
private TextView textView1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
textView1 = findViewById(R.id.textview1);
}
private void method1(){
textView1.setText("method 1");
}
private void method2(){
textView1.setText("method 2");
}
}
ButterKnife 由 Square 的 Jake Wharton 开发,主要用于在处理视图时避免输入重复的代码行,例如 findViewById(R.id.view),从而使我们的代码看起来更简洁。
将此依赖项添加到您的 build.gradle 中
compile 'com.jakewharton:butterknife:6.1.0'
在 onCreate() 上写这个
ButterKnife.bind(this);
然后你可以找到这样的元素:
@Bind(R.id.txtview1)
Textview textview;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.