我得到一些错误。我今天真的无法解决:(在 FillData() 方法中将 ID 数据设置为 lblID 后出现错误。它正确设置了 ID 数据,但 lblTitle 和 lblPrice 总是返回错误,例如“只有创建视图层次结构的原始线程才能触摸它的意见”和程序停止运行。
注意:这不是我的原始代码。我只是将其最小化以便更易于理解,当然它会给出与下面的代码相同的错误。无论如何,在 FillData() 方法中,我从 wcf 服务获取数据并正确返回数据。我试过runonuithread,但没有任何意义。此外,如果我在线程之外编写代码,它不会填充控件。因为它最初是从 wcf 服务获取数据的。
public class MainActivity extends AppCompatActivity {
LinearLayout lytData;
TextView lblTitle, lblID, lblPrice;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lytData = (TextView)findViewById(R.id.lytNewData);
lblID = (TextView)findViewById(R.id.lblID);
lblTitle = (TextView)findViewById(R.id.lblTitle);
lblPrice = (TextView)findViewById(R.id.lblPrice);
new Thread() {
public void run() {
FillData();
}
}.start();
lytData.setOnTouchListener(new OnCustomTouchListener (context) {
@Override
public void ToLeft() {
new Thread() {
public void run() {
FillData();
}
}.start();
}
@Override
public void ToRight() {
new Thread() {
public void run() {
FillData();
}
}.start();
}
});
}
void FillData() {
lblID.setText("aaa");
lblTitle.setText("aaa");
lblPrice.setText("aaa");
}