我有一个名为"描述符"通过标签管理视频的描述。我还有一个叫做#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;
}
我尝试了一些诊断:
是mTweetCompose null:NO。
是在UI Thread上调用的setPlaceHolder方法:YES。
有人有想法吗?