CardcastActivity.java 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228
  1. package com.sk.weichat.ui.cardcast;
  2. import android.annotation.SuppressLint;
  3. import android.app.Activity;
  4. import android.content.BroadcastReceiver;
  5. import android.content.ComponentName;
  6. import android.content.Context;
  7. import android.content.Intent;
  8. import android.content.ServiceConnection;
  9. import android.os.Bundle;
  10. import android.os.IBinder;
  11. import android.support.v4.app.Fragment;
  12. import android.support.v4.app.FragmentManager;
  13. import android.support.v4.app.FragmentTransaction;
  14. import android.support.v7.app.ActionBar;
  15. import android.support.v7.app.ActionBar.Tab;
  16. import android.view.View;
  17. import android.widget.RadioButton;
  18. import com.sk.weichat.R;
  19. import com.sk.weichat.bean.message.NewFriendMessage;
  20. import com.sk.weichat.broadcast.CardcastUiUpdateUtil;
  21. import com.sk.weichat.ui.base.BaseActivity;
  22. import com.sk.weichat.xmpp.CoreService;
  23. import com.sk.weichat.xmpp.CoreService.CoreServiceBinder;
  24. /**
  25. * 我的名片盒
  26. */
  27. @SuppressWarnings("deprecation")
  28. public class CardcastActivity extends BaseActivity {
  29. private TabListener<FriendFragment> mFriend;
  30. private TabListener<AttentionFragment> mAttention;
  31. private TabListener<RoomFragment> mRoom;
  32. private boolean mBind;
  33. private CoreService mXmppService;
  34. private RadioButton btnG;
  35. private RadioButton btnAG;
  36. private FriendFragment friendFragment;
  37. private AttentionFragment attentionFragment;
  38. private RoomFragment roomFragment;
  39. private FragmentTransaction bt;
  40. @Override
  41. protected void onCreate(Bundle savedInstanceState) {
  42. super.onCreate(savedInstanceState);
  43. // setup action bar for tabs
  44. setContentView(R.layout.activity_cardast);
  45. // ActionBar actionBar = getSupportActionBar();
  46. // actionBar.setTitle(R.string.my_friend);
  47. // actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
  48. // mFriend = new TabListener<FriendFragment>(this, "friend", FriendFragment.class);
  49. // mAttention = new TabListener<AttentionFragment>(this, "attention", AttentionFragment.class);
  50. // mRoom = new TabListener<RoomFragment>(this, "room", RoomFragment.class);
  51. // int index = 0;
  52. // if (savedInstanceState != null) {
  53. // mFriend.setFragment(getSupportFragmentManager().findFragmentByTag("friend"));
  54. // mAttention.setFragment(getSupportFragmentManager().findFragmentByTag("attention"));
  55. // mRoom.setFragment(getSupportFragmentManager().findFragmentByTag("room"));
  56. // index = savedInstanceState.getInt("index", 0);
  57. // }
  58. roomFragment = new RoomFragment();
  59. friendFragment = new FriendFragment();
  60. attentionFragment = new AttentionFragment();
  61. btnG = (RadioButton) findViewById(R.id.btn_guanzu);
  62. btnAG = (RadioButton) findViewById(R.id.btn_aguanzu);
  63. FragmentManager fm = getSupportFragmentManager();
  64. bt = fm.beginTransaction();
  65. bt.add(R.id.fl, friendFragment);
  66. bt.add(R.id.fl, attentionFragment);
  67. bt.hide(roomFragment);
  68. bt.commit();
  69. findViewById(R.id.tv_back).setOnClickListener(new View.OnClickListener() {
  70. @Override
  71. public void onClick(View view) {
  72. CardcastActivity.this.finish();
  73. }
  74. });
  75. btnG.setOnClickListener(new View.OnClickListener() {
  76. @SuppressLint("NewApi")
  77. @Override
  78. public void onClick(View view) {
  79. btnG.setClickable(false);
  80. btnG.setBackground(getResources().getDrawable(R.drawable.aguanzu_pass));
  81. btnAG.setBackground(getResources().getDrawable(R.drawable.guanzu));
  82. btnAG.setClickable(true);
  83. bt = getSupportFragmentManager().beginTransaction();
  84. bt.show(friendFragment);
  85. bt.hide(attentionFragment);
  86. bt.commit();
  87. }
  88. });
  89. btnAG.setOnClickListener(new View.OnClickListener() {
  90. @SuppressLint("NewApi")
  91. @Override
  92. public void onClick(View view) {
  93. btnAG.setClickable(false);
  94. btnG.setClickable(true);
  95. btnG.setBackground(getResources().getDrawable(R.drawable.aguanzu));
  96. btnAG.setBackground(getResources().getDrawable(R.drawable.guanzu_pass));
  97. bt = getSupportFragmentManager().beginTransaction();
  98. bt.show(attentionFragment);
  99. bt.hide(friendFragment);
  100. bt.commit();
  101. }
  102. });
  103. // Tab tab = actionBar.newTab().setText(R.string.focus_on_each_other).setTabListener(mFriend);
  104. // actionBar.addTab(tab);
  105. //
  106. // tab = actionBar.newTab().setText(R.string.unilateral_attention).setTabListener(mAttention);
  107. // actionBar.addTab(tab);
  108. // tab = actionBar.newTab().setText(R.string.focus_room).setTabListener(mRoom);
  109. // actionBar.addTab(tab);
  110. // actionBar.setSelectedNavigationItem(index);
  111. // registerReceiver(mUpdateReceiver, CardcastUiUpdateUtil.getUpdateActionFilter());
  112. // mBind = bindService(CoreService.getIntent(), mServiceConnection, BIND_AUTO_CREATE);
  113. }
  114. @Override
  115. protected void onSaveInstanceState(Bundle outState) {
  116. super.onSaveInstanceState(outState);
  117. outState.putInt("index", getSupportActionBar().getSelectedNavigationIndex());
  118. }
  119. private ServiceConnection mServiceConnection = new ServiceConnection() {
  120. @Override
  121. public void onServiceDisconnected(ComponentName name) {
  122. mXmppService = null;
  123. }
  124. @Override
  125. public void onServiceConnected(ComponentName name, IBinder service) {
  126. mXmppService = ((CoreServiceBinder) service).getService();
  127. }
  128. };
  129. void exitMucChat(String toUserId) {
  130. if (mXmppService != null) {
  131. mXmppService.exitMucChat(toUserId);
  132. }
  133. }
  134. @Override
  135. protected void onDestroy() {
  136. super.onDestroy();
  137. if (mBind) {
  138. unregisterReceiver(mUpdateReceiver);
  139. unbindService(mServiceConnection);
  140. }
  141. }
  142. void sendNewFriendMessage(String toUserId, NewFriendMessage message) {
  143. if (mBind && mXmppService != null) {
  144. mXmppService.sendNewFriendMessage(toUserId, message);
  145. }
  146. }
  147. private BroadcastReceiver mUpdateReceiver = new BroadcastReceiver() {
  148. @Override
  149. public void onReceive(Context context, Intent intent) {
  150. if (intent.getAction().equals(CardcastUiUpdateUtil.ACTION_UPDATE_UI)) {
  151. if (mAttention.getFragment() != null) {
  152. mAttention.getFragment().update();
  153. }
  154. if (mFriend.getFragment() != null) {
  155. mFriend.getFragment().update();
  156. }
  157. if (mRoom.getFragment() != null) {
  158. mRoom.getFragment().update();
  159. }
  160. }
  161. }
  162. };
  163. public static class TabListener<T extends Fragment> implements ActionBar.TabListener {
  164. private Fragment mFragment;
  165. private final Activity mActivity;
  166. private final String mTag;
  167. private final Class<T> mClass;
  168. public TabListener(Activity activity, String tag, Class<T> clz) {
  169. mActivity = activity;
  170. mTag = tag;
  171. mClass = clz;
  172. }
  173. public void setFragment(Fragment fragment) {
  174. mFragment = fragment;
  175. }
  176. @SuppressWarnings("unchecked")
  177. public T getFragment() {
  178. return (T) mFragment;
  179. }
  180. public void onTabSelected(Tab tab, FragmentTransaction ft) {
  181. // Check if the fragment is already initialized
  182. if (mFragment == null) {
  183. // If not, instantiate and add it to the activity
  184. mFragment = Fragment.instantiate(mActivity, mClass.getName());
  185. ft.add(android.R.id.content, mFragment, mTag);
  186. } else {
  187. // If it exists, simply attach it in order to show it
  188. ft.attach(mFragment);
  189. }
  190. }
  191. public void onTabUnselected(Tab tab, FragmentTransaction ft) {
  192. if (mFragment != null) {
  193. // Detach the fragment, because another one is being attached
  194. ft.detach(mFragment);
  195. }
  196. }
  197. public void onTabReselected(Tab tab, FragmentTransaction ft) {
  198. // User selected the already selected tab. Usually do nothing.
  199. }
  200. }
  201. }