无法可靠地将Edittext提示从一个片段更新到另一个片段

时间:2015-03-12 05:26:01

标签: android android-fragments android-edittext

我有一个名为"描述符"通过标签管理视频的描述。我还有一个叫做#34; Chat"这是一个允许用户聊天的编辑文本。当框为空时,占位符(提示)仍然存在。提示通常包含视频标签。

每当用户使用新标签或不同标签更改视频的说明时,占位符都应更新提示。

但是在我的情况下,2/3次占位符不会更新。我不知道造成这种不一致的原因。

基本上代码分为3个。

这是描述符片段方法(片段是DialogFragment),它将通过监听器将新标记信息传递回父活动:

 @Override
    public void onClick(View v) {
        switch(v.getId()){
            case R.id.describe_done_button:
                if (mListener != null) {
                    HashMap<String, String> streemDescription = setStreemInfoToActivity();
                    mListener.onFragmentInteraction(streemDescription);
                }
                dismiss();
                break;
            default: break;
        }

    }

这是活动监听器。正如你所看到的那样,&#34;倾听&#34;到描述符并调用其他片段的活动来更新提示:

  @Override
public void onFragmentInteraction(HashMap<String, String> streemDescription) {
    mStreem.setTitle(streemDescription.get(getString(R.string.title_constant)));
    for (int i = 0; i < mStreem.getTags().length; i++){
        String key = "tag"+(i+1);
        String tag = streemDescription.get(key);
        if (tag != null){
            if (tag.equals("")) tag = null;
            mStreem.setTag(tag, i);
        }
    }
    storeStreemInfo();
    TwitterChatFragment twitterChatFragment = (TwitterChatFragment) getFragmentManager().findFragmentByTag(TWITTERCHAT_TAG);
    Log.i("IS FRAGMENT VISIBLE", String.valueOf(twitterChatFragment.isVisible()));
    if (twitterChatFragment != null){
        twitterChatFragment.setPlaceHolder(mStreem.getTitle(), mStreem.getTags());
    }


}

最后聊天片段中应该更新的方法:

 public String setPlaceHolder(String streemTitle, String[] streemTags) {
    String placeholder = "";
    placeholder += "I'm streeming live!";
    if (streemTags != null){
        for (String tag : streemTags){
            if (tag != null && !tag.equals("")){
                placeholder += " #" + tag;
            }
        }
    }

      if(!placeholder.equals("")) {
          mTweetCompose.setHint(placeholder);
          mTweetCompose.setText(placeholder);
      }


    Log.i("PLACEHOLDER", String.valueOf(mTweetCompose.getId()));
    return placeholder;
}

我尝试了一些诊断:

  • 是传递的字符串值:YES。
  • 是mTweetCompose null:NO。

  • 是在UI Thread上调用的setPlaceHolder方法:YES。

  • 你有没有试过runonUIThread:这些方法都是YES,来自describe 片段到活动聊天片段。
  • 是可见的聊天片段:是
  • 您是否尝试过其他EditText操作:是的,我尝试过setText,但是也以类似的速率失败

有人有想法吗?

0 个答案:

没有答案