package net.cgt.weixin.activity; import java.lang.reflect.Field; import java.lang.reflect.Method; import net.cgt.weixin.Constants; import net.cgt.weixin.GlobalParams; import net.cgt.weixin.R; import net.cgt.weixin.factory.FragmentFactory; import net.cgt.weixin.utils.AppToast; import net.cgt.weixin.utils.L; import net.cgt.weixin.utils.LogUtil; import net.cgt.weixin.utils.SpUtil; import android.annotation.SuppressLint; import android.app.ActionBar; import android.app.Activity; import android.app.Fragment; import android.app.FragmentManager; import android.app.FragmentTransaction; import android.content.Intent; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.ViewConfiguration; import android.view.Window; import android.widget.RadioButton; import android.widget.RadioGroup; import android.widget.RadioGroup.OnCheckedChangeListener; import android.widget.SearchView; /** * 主控制界面 * * @author lijian * */ @SuppressLint("NewApi") public class MainActivity extends Activity implements OnCheckedChangeListener { private static final String LOGTAG = LogUtil.makeLogTag(MainActivity.class); private FragmentManager mFragmentManager; private RadioGroup mRg_tab; private SpUtil sp; @Override protected void onCreate(Bundle savedInstanceState) { if (!GlobalParams.ISLOGIN) { L.d(LOGTAG, "MainActivity--->isLogin=" + GlobalParams.ISLOGIN); Intent intent = new Intent(this, LoginActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); startActivity(intent); // finish(); } super.onCreate(savedInstanceState); setContentView(R.layout.cgt_activity_main); init(); } @Override protected void onResume() { super.onResume(); if (!GlobalParams.ISLOGIN) { finish(); } } private void init() { initView(); initData(); } private void initView() { ActionBar actionBar = this.getActionBar(); actionBar.setDisplayShowHomeEnabled(false); actionBar.setDisplayShowTitleEnabled(true); setOverflowShowingAlways(); mFragmentManager = getFragmentManager(); mRg_tab = (RadioGroup) findViewById(R.id.cgt_rg_tab); mRg_tab.setOnCheckedChangeListener(this); } private void initData() { sp = new SpUtil(this); int id = sp.getInt(Constants.PAGENUMBER, 1); showPreviousPage(id); } /** * 通过反射得到Android的有无物理Menu键 */ private void setOverflowShowingAlways() { try { ViewConfiguration config = ViewConfiguration.get(this); Field menuKeyField = ViewConfiguration.class.getDeclaredField("sHasPermanentMenuKey"); menuKeyField.setAccessible(true); menuKeyField.setBoolean(config, false); } catch (Exception e) { e.printStackTrace(); } } /** * 显示上次退出时的页面 * * @param id */ private void showPreviousPage(int id) { RadioButton mRb_show = null; switch (id) { case 1: mRb_show = (RadioButton) findViewById(R.id.cgt_rb_weixin); break; case 2: mRb_show = (RadioButton) findViewById(R.id.cgt_rb_addressbook); break; case 3: mRb_show = (RadioButton) findViewById(R.id.cgt_rb_find); break; case 4: mRb_show = (RadioButton) findViewById(R.id.cgt_rb_me); break; default: mRb_show = (RadioButton) findViewById(R.id.cgt_rb_weixin); break; } mRb_show.setChecked(true); ShowFragmen(id); } @Override public void onCheckedChanged(RadioGroup group, int checkedId) { int id = 1; switch (checkedId) { case R.id.cgt_rb_weixin: id = 1; break; case R.id.cgt_rb_addressbook: id = 2; break; case R.id.cgt_rb_find: id = 3; break; case R.id.cgt_rb_me: id = 4; break; default: id = 1; break; } sp.saveInt(Constants.PAGENUMBER, id); ShowFragmen(id); } /** * 显示Fragment页面 * * @param id */ private void ShowFragmen(int id) { FragmentTransaction transaction = mFragmentManager.beginTransaction(); Fragment fragment = FragmentFactory.getInstanceByIndex(id); transaction.replace(R.id.cgt_fl_content, fragment); transaction.commit(); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.cgt_menu_weixin, menu); MenuItem searchItem = menu.findItem(R.id.menu_weixin_search); SearchView searchView = (SearchView) searchItem.getActionView(); // // 给SearchView添加展开/合并的监听 // searchItem.setOnActionExpandListener(new OnActionExpandListener() { // // @Override // public boolean onMenuItemActionExpand(MenuItem item) { // L.i(LOGTAG, "on expand"); // AppToast.getToast().show("搜索展开"); // return false; // } // // @Override // public boolean onMenuItemActionCollapse(MenuItem item) { // L.i(LOGTAG, "on collapse"); // AppToast.getToast().show("搜索合并"); // return false; // } // }); return super.onCreateOptionsMenu(menu);//true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: AppToast.getToast().show("返回上一页"); // Intent upIntent = NavUtils.getParentActivityIntent(this); // if (NavUtils.shouldUpRecreateTask(this, upIntent)) { // // TaskStackBuilder.create(this) // .addNextIntentWithParentStack(upIntent).startActivities(); // } else { // upIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); // NavUtils.navigateUpTo(this, upIntent); // } break; case R.id.menu_weixin_groupChat: AppToast.getToast().show(R.string.text_menu_weixin_groupChat); break; case R.id.menu_weixin_addFriend: AppToast.getToast().show(R.string.text_menu_weixin_addFriend); break; case R.id.menu_weixin_sweep: AppToast.getToast().show(R.string.text_menu_weixin_sweep); break; case R.id.menu_weixin_feedback: AppToast.getToast().show(R.string.text_menu_weixin_feedback); break; default: break; } return super.onOptionsItemSelected(item); } /** * overflow被展开的时候调用 * * @param featureId * @param menu * @return */ @Override public boolean onMenuOpened(int featureId, Menu menu) { //通过返回反射的方法将MenuBuilder的setOptionalIconsVisible变量设置为true if (featureId == Window.FEATURE_ACTION_BAR && menu != null) { if (menu.getClass().getSimpleName().equals("MenuBuilder")) { try { Method m = menu.getClass().getDeclaredMethod("setOptionalIconsVisible", Boolean.TYPE); m.setAccessible(true); m.invoke(menu, true); } catch (Exception e) { } } } return super.onMenuOpened(featureId, menu); } }