Java Android 2.2 EditText.setText(..)不会更改文本
好吧,我已经不知所措了。 我在做什么: -获取xml -解析xml -根据解析的xml,通过带有kay/value内容的包装器类加载文本框 -在onSaveInstanceState中保存xml -保存编辑文本框内容以获取onSaveInstanceState中的键/值对 -->手动旋转屏幕 -加载xml并再次解析它 -根据新生成的EditText框的键获取EditText框的键/值对 我想做的是: -根据键,使用旧内容设置新编辑文本框的文本 问题 -文本未设置 代码 MyActivity.classJava Android 2.2 EditText.setText(..)不会更改文本,java,android,android-edittext,android-2.2-froyo,settext,Java,Android,Android Edittext,Android 2.2 Froyo,Settext,好吧,我已经不知所措了。 我在做什么: -获取xml -解析xml -根据解析的xml,通过带有kay/value内容的包装器类加载文本框 -在onSaveInstanceState中保存xml -保存编辑文本框内容以获取onSaveInstanceState中的键/值对 -->手动旋转屏幕 -加载xml并再次解析它 -根据新生成的EditText框的键获取EditText框的键/值对 我想做的是: -根据键,使用旧内容设置新编辑文本框的文本 问题 -文本未设置 代码 MyActivity.cl
private String commentRequestResult = "";
private CommentSectionComponent commentSectionComponent;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
Intent intent = getIntent();
publicationId = intent.getStringExtra(ExtraKeyProvider.PUBLICATION_ID);
...
try {
if (savedInstanceState != null && ActivityStackHelper.isCalledInSuccession(this)) {
...
commentRequestResult = savedInstanceState.getString(BundleKeyProvider.PUBLICATIONS_DETAIL_ACTIVITY_COMMENTS);
createCommentsSection(commentRequestResult, savedInstanceState);
} else {
...
}
} catch (Exception e) {
Message.show(e);
}
}
private void createCommentsSection(String internalRequestResult, Bundle savedInstanceState) {
XmlParser parser = new XmlParser(internalRequestResult);
commentSectionComponent = new CommentSectionComponent(this);
BaseCommentComponent newCommentComponent = getNewCommentComponent();
commentSectionComponent.addCommentComponent(newCommentComponent);
...
fillCommentSectionFromSavedInstance(savedInstanceState);
}
private void fillCommentSectionFromSavedInstance(Bundle savedInstanceState) {
if (savedInstanceState != null) {
System.out.println("restoring...");
String lastSelectedKey = BundleKeyProvider.PUBLICATIONS_DETAIL_ACTIVITY_COMMENTS_LAST_FOCUS;
String lastSelected = savedInstanceState.getString(lastSelectedKey);
List<BaseCommentComponent> baseCommentComponents = commentSectionComponent.getBaseCommentComponents();
for (BaseCommentComponent baseCommentComponent : baseCommentComponents) {
Comment comment = baseCommentComponent.getComment();
baseCommentComponent.openCommentForWriting();
baseCommentComponent.setText("DOES NOT WORK");
//getting the EditText from baseCommentComponent does also not help
}
}
}
CommentCreationComponent
public class CommentCreationComponent extends BaseCommentComponent {
public CommentCreationComponent(LinearLayout currentLinearLayout, Comment comment, Context context, Request request, Button sendButton,
Button abortButton, EditText textField, EditText nameTextField) {
super(currentLinearLayout, comment, context, request, sendButton, abortButton, textField, nameTextField);
sendButton.setVisibility(Button.VISIBLE);
sendButton.setText(getOriginalButtonText());
}
@Override
protected String getOriginalButtonText() {
return "New comment";
}
@Override
protected String getPartialUrl() {
return "publication/addComment";
}
@Override
protected String getMessageToBeDisplayedOnSuccessfulSending() {
return "Comment was sent";
}
}
public class CommentSectionComponent {
private LinearLayout placeHolder;
private List<BaseCommentComponent> baseCommentComponents = new ArrayList<BaseCommentComponent>();
public CommentSectionComponent(Context context) {
Activity activity = (Activity) context;
placeHolder = (LinearLayout) activity.findViewById(R.id.placeHolder);
TextView commentSectionHeader = new TextView(context);
commentSectionHeader.setText("Kommentare");
ComponentHelper.convertToHeaderLabel(commentSectionHeader, context);
ComponentHelper.setPublicationDetailLayout(placeHolder);
placeHolder.addView(commentSectionHeader);
}
public void addCommentComponent(BaseCommentComponent comment) {
baseCommentComponents.add(comment);
LinearLayout linearLayout = comment.getLinearLayout();
placeHolder.addView(linearLayout);
}
public List<BaseCommentComponent> getBaseCommentComponents() {
return baseCommentComponents;
}
}
评论部分组件
public class CommentCreationComponent extends BaseCommentComponent {
public CommentCreationComponent(LinearLayout currentLinearLayout, Comment comment, Context context, Request request, Button sendButton,
Button abortButton, EditText textField, EditText nameTextField) {
super(currentLinearLayout, comment, context, request, sendButton, abortButton, textField, nameTextField);
sendButton.setVisibility(Button.VISIBLE);
sendButton.setText(getOriginalButtonText());
}
@Override
protected String getOriginalButtonText() {
return "New comment";
}
@Override
protected String getPartialUrl() {
return "publication/addComment";
}
@Override
protected String getMessageToBeDisplayedOnSuccessfulSending() {
return "Comment was sent";
}
}
public class CommentSectionComponent {
private LinearLayout placeHolder;
private List<BaseCommentComponent> baseCommentComponents = new ArrayList<BaseCommentComponent>();
public CommentSectionComponent(Context context) {
Activity activity = (Activity) context;
placeHolder = (LinearLayout) activity.findViewById(R.id.placeHolder);
TextView commentSectionHeader = new TextView(context);
commentSectionHeader.setText("Kommentare");
ComponentHelper.convertToHeaderLabel(commentSectionHeader, context);
ComponentHelper.setPublicationDetailLayout(placeHolder);
placeHolder.addView(commentSectionHeader);
}
public void addCommentComponent(BaseCommentComponent comment) {
baseCommentComponents.add(comment);
LinearLayout linearLayout = comment.getLinearLayout();
placeHolder.addView(linearLayout);
}
public List<BaseCommentComponent> getBaseCommentComponents() {
return baseCommentComponents;
}
}
当我手动单击按钮时,它会起作用,但当我将按钮放入我的活动中时,它就不起作用了,只是将其传递并以编程方式单击它。
正如你所看到的,我已经试过一些东西,但没有用。我还检查了对象id,它们匹配只是为了排除意外覆盖组件
我还尝试从一开始就删除所有可见性内容以显示EditText字段,显然没有解决我的问题
有人来挑战吗?任何帮助都将不胜感激因为我有时会尝试,在设置文本后尝试调用EditText上的invalidate如何?也许在UI线程上也是如此。我没有阅读所有的代码,因为这是一篇很长的文章,所以我想我会把它扔出去,因为你已经尝试在UI线程上运行了。为什么有人拒绝投票?你是否为你的组件设置了ID?@wtsang02:我拒绝投票,因为这是一个结构非常糟糕的问题。OP应该是在试图解决调用setText的问题。。。在EditText小部件上,但发布了大量不相关的代码。同样的问题本可以在短得多的帖子中提出。如果我们想让人们帮助我们解决编码问题,我们应该保持简洁,并且以其他人能够重现问题并希望提供解决方案的方式。这种代码完全是荒谬的。这就像是一场企业噩梦。在我们寻求帮助之前,请缩短此长度。