这个表达式很好,emojiFragment = (emojiFragment == null ? new EmojiFragment() : emojiFragment);如果对了,就赋前者给引用,如果错了,就赋后者给引用。所以,我们通常可以用这个表达式来减少代码量。(而且源代码中也是经常这么做的)
接下来简化一下(别管是代码干什么的,简化就是了)
if (moreMsgTypeFragment == null) { moreMsgTypeFragment = new MoreMsgTypeFragment(); } if (!moreMsgTypeFragment.isAdded()) { transaction.add(R.id.fl_emoji_fragment_container, moreMsgTypeFragment); } if (emojiFragment != null && emojiFragment.isAdded() && !emojiFragment.isHidden()) { transaction.hide(emojiFragment); } if (mFlEmojiFragmentContainer.getVisibility() == View.VISIBLE && moreMsgTypeFragment.isAdded() && !moreMsgTypeFragment.isHidden()) { mFlEmojiFragmentContainer.setVisibility(View.GONE); } else { mFlEmojiFragmentContainer.setVisibility(View.VISIBLE); } if (moreMsgTypeFragment.isHidden()) { transaction.show(moreMsgTypeFragment); }
简化后是这样的:
moreMsgTypeFragment = moreMsgTypeFragment == null ? new MoreMsgTypeFragment() : moreMsgTypeFragment; transaction = !moreMsgTypeFragment.isAdded() ? transaction.add(R.id.fl_emoji_fragment_container, moreMsgTypeFragment) : transaction; transaction = emojiFragment != null && emojiFragment.isAdded() && !emojiFragment.isHidden() ? transaction.hide(emojiFragment) : transaction; mFlEmojiFragmentContainer.setVisibility(mFlEmojiFragmentContainer.getVisibility() == View.VISIBLE && moreMsgTypeFragment.isAdded() && !moreMsgTypeFragment.isHidden() ? View.GONE : View.VISIBLE); transaction = moreMsgTypeFragment.isHidden() ? transaction.show(moreMsgTypeFragment) : transaction;
看着挺舒服的,就是感觉性能上可能有点??把引用赋给他自身,就感觉有点奇怪。还有如果是空返回值的话,又该怎么处理。望指教。
版权声明:本文为qq_36523667原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。