我正在向 Android 动态添加视图,并且看到了一个非常奇怪的结果,这几乎没有意义。这是显示错误的代码:
private static int count = 0;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
count++;
// Allow 'up' action for actionBar
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setTitle("TEST");
setContentView(R.layout.test);
LinearLayout testLinear = (LinearLayout)findViewById(R.id.testLinear);
LayoutInflater inflater = (LayoutInflater)this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view = inflater.inflate(R.layout.job_step_text, null, false);
TextView title = (TextView) view.findViewById(R.id.jobStepTextTextView);
final EditText editText = (EditText)view.findViewById(R.id.jobStepEditText);
title.setText("Field 1");
editText.setText("Value 1");
testLinear.addView(view);
if(count == 1) {
View view2 = inflater.inflate(R.layout.job_step_text, null, false);
TextView title2 = (TextView) view2.findViewById(R.id.jobStepTextTextView);
final EditText editText2 = (EditText)view2.findViewById(R.id.jobStepEditText);
title2.setText("Field 2");
editText2.setText("Value 2");
testLinear.addView(view2);
}
}
第一轮活动如下:
字段 1:[值 1]
字段 2:[ 值 2 ]
然后当设备旋转时显示如下:
字段 1:[值 2]
任何人都可以帮忙吗?似乎在第一次绕行之后:
final EditText editText = (EditText)view.findViewById(R.id.jobStepEditText);
正在获取旧的引用而不是调用 setText()?当屏幕旋转将文本字段设置为“值 2”的代码行时,甚至没有调用,但这就是字段 1 文本框中的结果。
任何人都可以帮忙吗?
顺便说一句 - 解决这个问题的一种方法是在将每个 EditText 添加到视图之前给它一个唯一的 ID ...但这没有任何意义...当然膨胀的视图不知道任何其他视图(过去或现在)直到 testLinear.addView(view); 被添加?
提前致谢。