4Manuals

  • PDF Cloud HOME

如何通过其标签识别EditText Download

    如何在Android中使用WebRTC缩放相机 春季启动-Couchbase AbstractCouchbaseConfiguration-如何避免覆盖不必要的方法 我不知道(未解决的编译问题:) Android 10,API29:在应用程序文件夹中使用C ++库编写文件会使应用程序崩溃 如何将动态值传递给渐变xml 加载数据并推送到未显示的RecyclerView中 调用Model类的函数时出现java.lang.NullPointerException 字符串数组在for循环中初始化时忽略索引0 Spring MVC @ModelAttribute未填充AJAX发布请求 从网络加载图像时,“接收到完整的报头之前关闭连接

我试图通过for()循环从应用程序的一系列EditText视图中获取值,但是当我调用getText()方法时,应用程序崩溃了。有9个EditText,它们每个都有一个1-9的Tag,所以我试图使用getIdentifier()方法并使用其Tag搜索每个EditText,我认为那是不起作用的部分...这里有什么想法?预先感谢!

public void xCalculateProfits (View view){
        for (int x = 1; x <= 9; x++){
            EditText xCurrentBox = (EditText) findViewById(getResources().getIdentifier(Integer.toString(x),"tag",getPackageName()));
            Toast.makeText(this, xCurrentBox.getText().toString(), Toast.LENGTH_SHORT).show();
        }
    }

2 个答案:

答案 0 :(得分:1)

我认为您的应用程序已崩溃,因为xCurrentBox为null。 您可以定义一个int数组,并在其中存储每个EditText的ID,并使用for循环访问所有EditText。

当然您可以找到带有标签的视图。但您必须可以访问根视图。 例如,我的活动中有一个线性布局,可以使用它来通过标签访问子视图。

例如:

   LinearLayout linearLayout = findViewById(R.id.linearLayout);

    for(int i=1 ; i<=4 ; i++)
    {
        EditText et = linearLayout.findViewWithTag(i+"");
        Toast.makeText(this , et.getText().toString() , 
        Toast.LENGTH_SHORT).show();
    }

答案 1 :(得分:1)

要按其标签查找视图,请使用View#findViewWithTag("tag")。这是View类的方法,因此您必须在EditTexts下方的任何布局上调用它,例如,根视图:

View root = getWindow().getDecorView().getRootView();
for (int x = 1; x <= 9; x++){
    EditText xCurrentBox = (EditText) root.findViewWithTag("" + i);
    Toast.makeText(this, xCurrentBox.getText().toString(), Toast.LENGTH_SHORT).show();
}

但是,如果您在布局.xml文件中创建了这些EditText(不是动态生成),则建议您创建一个包含其ID的数组,如下所示:

public int[] viewsIds = {
        R.id.edit_text1,
        R.id.edit_text2,
        R.id.edit_text3,
        R.id.edit_text4,
        ...
};

然后在for循环中使用它

for (int x = 1; x <= 9; x++){
        EditText xCurrentBox = (EditText) findViewById(viewsIds[i]);
        Toast.makeText(this, xCurrentBox.getText().toString(), Toast.LENGTH_SHORT).show();
}

这样,您的代码将更安全,因为可以使用自动生成的R类从静态类型中受益



Similar searches
    如何在Angular中创建动态元素 使用tf.image.crop_and_resize的OutOfRangeError MySQL,MyBatis数据库连接问题,等待时间超时 Samsung RSG307AARS Refrigerator User Manual React JS中的声明式组​​合与命令式