Java Android 2.2 EditText.setText(..)不会更改文本

Java 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

好吧,我已经不知所措了。 我在做什么: -获取xml -解析xml -根据解析的xml,通过带有kay/value内容的包装器类加载文本框 -在onSaveInstanceState中保存xml -保存编辑文本框内容以获取onSaveInstanceState中的键/值对 -->手动旋转屏幕 -加载xml并再次解析它 -根据新生成的EditText框的键获取EditText框的键/值对

我想做的是: -根据键,使用旧内容设置新编辑文本框的文本

问题 -文本未设置

代码 MyActivity.class

    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小部件上,但发布了大量不相关的代码。同样的问题本可以在短得多的帖子中提出。如果我们想让人们帮助我们解决编码问题,我们应该保持简洁,并且以其他人能够重现问题并希望提供解决方案的方式。这种代码完全是荒谬的。这就像是一场企业噩梦。在我们寻求帮助之前,请缩短此长度。