如何以及在何处使用 Java 在 android Studio 中初始化 EditText 和 Button 的全局数组

用户5653890

我已经创建了我的第一个计算器应用程序,但为了减小大小并简化代码,我想创建一个EditText作为全局变量的Button数组,然后创建一个也作为全局变量数组。现在,当我EditText在方法之外定义和初始化数组时,应用程序在开始时崩溃。

但是当我在方法外定义数组并在方法内初始化它时,我得到这里不允许的数组初始化错误。该怎么办?示例代码将不胜感激。

案例 1(应用程序崩溃)

public class MainActivity extends AppCompatActivity
        implements NavigationView.OnNavigationItemSelectedListener {
    EditText[] editList = {(EditText) findViewById(R.id.decValue), (EditText) findViewById(R.id.octValue), (EditText) findViewById(R.id.hexValue), (EditText) findViewById(R.id.hexValue),(EditText) findViewById(R.id.binValue)};
    ..
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    ..
    }
}

Case-2(这里无法初始化数组的错误)

public class MainActivity extends AppCompatActivity
        implements NavigationView.OnNavigationItemSelectedListener {
    EditText[] editList;
    ..
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    ..
    editList = {(EditText) findViewById(R.id.decValue), (EditText) findViewById(R.id.octValue), (EditText) findViewById(R.id.hexValue), (EditText) findViewById(R.id.hexValue),(EditText) findViewById(R.id.binValue)};
    }
}
用户9782202

情况1

您正在使用实例初始值设定项,因此您的列表在 MainActivity 的构造函数被调用之前和 onCreate() -> setContentView() 之前被初始化,这意味着此时没有 UI。

案例二

声明成员变量时只能使用速记数组初始化语法。

将其替换为new EditText[]{...}.

建议

我会使用ButterKnife库。它使视图绑定更容易,您还可以将多个视图分组到一个列表中,这正是您想要实现的。

添加依赖

dependencies {
  implementation 'com.jakewharton:butterknife:8.8.1'
  annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'
}

在您的活动中:

@BindViews({R.id.first_name, R.id.middle_name, R.id.last_name})
List<EditText> nameViews;

@Override
public void onCreate(Bundle savedInstanceState) {
    //...
    ButterKnife.bind(this);
}

就是这样。看起来更具可读性。

将操作应用于列表中的所有视图:

ButterKnife.apply(list, (view, index) -> {
    //your action for view
});

有关详细信息,请查看文档。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

C ++ / Qt如何声明和初始化对象的全局数组

如何在Java中声明和初始化数组?

如何修复Android Studio中的“无法初始化DirectSoundCapture”

在Java中,初始化和访问方法内部的数组?

如何定义全局数组并在Java中的不同类中调用

我如何先在C中声明一个全局数组,然后再初始化它的大小?

如何初始化保存指向结构体的指针的全局数组?

C:当运行时才知道大小时,如何初始化全局数组?

如何在Kotlin中使用全局数组var(android)

使用Android在Java中初始化对象上的NullPointerException

如何从EditText和按钮填充ArrayList /初始化对象

使用python joblib访问和更改全局数组

使用 TypeScript 从全局数组中获取对象数组列表

如何在Java中初始化对象的静态数组

如何在 Java 中静态初始化对象数组

如何在Java中的循环中初始化数组?

如何在Java中初始化动态数组?

如何在Java中初始化对象数组

如何在Java中初始化数组?

如何防止在 Julia 的模块中迭代使用全局数组?

Android Java多数组初始化

如何初始化和使用数组

如何在Swift 4中访问全局数组?

使用并行递归更新R中的全局数组

在Perl中的不同线程中使用全局数组

如何初始化二维数组以及如何从java中的main方法访问它?

检查在“ EditText”中输入的数字是否在数组中-Android Studio Java

java - 如何在java中拥有常量初始化向量和密钥?

如何在TypeScript中实例化,初始化和填充数组?