gpt4 book ai didi

android - 如何在循环中动态使用 addRule() 和标签,它在膨胀 View 时出现异常?

转载 作者:行者123 更新时间:2023-11-29 00:29:42 24 4
gpt4 key购买 nike

我有一个循环将可变数量的 View 添加到 RelativeLayout,我想设置一些规则,如 BELOW,我的问题是我使用标签动态命名对象,要使用 addRule() 方法,我需要使用一个 id,所以我尝试的是在每次运行循环时设置一个 Id,这不是第一次。

这是我的代码:

for(int i = 1; i <= kNumberofViews; i++){
View = new MyView(context);
RelativeLayout.LayoutParams params = new LayoutParams(kViewWidth, kViewHeight);
params.setMargins(kMarginLeft, kMarginTop, kMarginRight, kMarginBottom);
params.addRule(CENTER_HORIZONTAL);
if (i != 1){
MyView view = (MyView)view.findViewWithTag(i-1);
view.setId(i);
params.addRule(RelativeLayout.BELOW, view.getId());
}
View.setTag(i);
View.setBackgroundColor(Color.GREEN);
System.out.println("View " + i +" added correctly");
addView(View, params);
}

我该如何解决?

编辑:

05-18 14:57:19.549: E/AndroidRuntime(5500): FATAL EXCEPTION: main
05-18 14:57:19.549: E/AndroidRuntime(5500): java.lang.RuntimeException: Unable to start activity ComponentInfo{me.gabrielesteban.app/me.gabrielesteban.app.MyRelativeLayoutTest}: android.view.InflateException: Binary XML file line #7: Error inflating class me.gabrielesteban.app.GD.MyRelativeLayout
05-18 14:57:19.549: E/AndroidRuntime(5500): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2307)
05-18 14:57:19.549: E/AndroidRuntime(5500): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2357)
05-18 14:57:19.549: E/AndroidRuntime(5500): at android.app.ActivityThread.access$600(ActivityThread.java:153)

编辑 2:

我认为问题出在以下行 MyView view = (MyView)view.findViewWithTag(i-1);,这行是否正确?

最佳答案

我再次检查了我的代码,还阅读了 How do I call findViewWithTag in the OnCreate() method of an activity?我看到当我调用 findViewWithTag() 方法时,将我找到的相同对象放在该方法之前,所以结果是在该对象内找不到带有该标签的对象,所以我唯一拥有的要做的就是删除那部分。

MyView view = (MyView)view.findViewWithTag(i-1); //Bad way to find the View

MyView view = (MyView)findViewWithTag(i-1); //Good way to find the View by tag

关于android - 如何在循环中动态使用 addRule() 和标签,它在膨胀 View 时出现异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16624325/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com