package com.qmusic.activities;
import org.json.JSONObject;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnClickListener;
import cn.jpush.android.api.JPushInterface;
import com.qmusic.R;
import com.qmusic.activities.fragments.Fragment1;
import com.qmusic.activities.fragments.Fragment2;
import com.qmusic.activities.fragments.Fragment3;
import com.qmusic.common.BAppHelper;
import com.qmusic.controls.BTabFragment;
import com.qmusic.uitls.BLog;
import com.umeng.analytics.MobclickAgent;
public class MainActivity extends BaseActivity implements OnClickListener {
static final String TAG = MainActivity.class.getSimpleName();
public static final int MSG_SWITCH_TAB = 100;
public static final int MSG_LOGOUT = 101;
private View tab1, tab2, tab3;
private Handler handler;
int currentTab = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (savedInstanceState != null) {
currentTab = savedInstanceState.getInt("currentTab");
}
init();
}
void init() {
handler = new MainHandler(this);
tab1 = findViewById(R.id.activity_main_tab1);
tab2 = findViewById(R.id.activity_main_tab2);
tab3 = findViewById(R.id.activity_main_tab3);
tab1.setOnClickListener(this);
tab2.setOnClickListener(this);
tab3.setOnClickListener(this);
Bundle bundle = getIntent().getExtras();
if (bundle != null) {
try {
String extra = bundle.getString(JPushInterface.EXTRA_EXTRA);
JSONObject extraJSON = new JSONObject(extra);
currentTab = extraJSON.optInt("tab", 1);
currentTab = Math.max(currentTab, 1);
currentTab = Math.min(currentTab, 3);
} catch (Exception ex) {
ex.printStackTrace();
}
}
changeTab(currentTab);
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt("currentTab", currentTab);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
BAppHelper.exit(this, false);
return true;
}
return super.onKeyDown(keyCode, event);
}
@Override
public void onClick(View v) {
int newTab = 1;
int id = v.getId();
if (id == R.id.activity_main_tab1) {
newTab = 1;
} else if (id == R.id.activity_main_tab2) {
newTab = 2;
} else if (id == R.id.activity_main_tab3) {
newTab = 3;
}
if (currentTab != newTab) {
changeTab(newTab);
}
}
private void changeTab(int newTab) {
FragmentManager manager = getSupportFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();
BTabFragment fragment1 = (Fragment1) manager.findFragmentByTag("fragment1");
BTabFragment fragment2 = (Fragment2) manager.findFragmentByTag("fragment2");
BTabFragment fragment3 = (Fragment3) manager.findFragmentByTag("fragment3");
if (newTab == 1) {
if (fragment1 == null) {
fragment1 = new Fragment1();
transaction.add(R.id.activity_main_content, fragment1, "fragment1");
} else {
transaction.show(fragment1);
}
fragment1.onSelected();
tab1.setSelected(true);
tab2.setSelected(false);
tab3.setSelected(false);
if (fragment2 != null && !fragment2.isHidden()) {
transaction.hide(fragment2);
}
if (fragment3 != null && !fragment3.isHidden()) {
transaction.hide(fragment3);
}
MobclickAgent.onEvent(this, "fragment1");
} else if (newTab == 2) {
// if (!BUser.isLogined()) {
// Intent intent = new Intent(this, LoginActivity.class);
// startActivity(intent);
// return;
// }
if (fragment2 == null) {
fragment2 = new Fragment2();
transaction.add(R.id.activity_main_content, fragment2, "fragment2");
} else {
transaction.show(fragment2);
}
fragment2.onSelected();
tab2.setSelected(true);
tab1.setSelected(false);
tab3.setSelected(false);
if (fragment1 != null && !fragment1.isHidden()) {
transaction.hide(fragment1);
}
if (fragment3 != null && !fragment3.isHidden()) {
transaction.hide(fragment3);
}
MobclickAgent.onEvent(this, "fragment2");
} else if (newTab == 3) {
// if (!BUser.isLogined()) {
// Intent intent = new Intent(this, LoginActivity.class);
// startActivity(intent);
// return;
// }
if (fragment3 == null) {
fragment3 = new Fragment3();
transaction.add(R.id.activity_main_content, fragment3, "fragment3");
} else {
transaction.show(fragment3);
}
fragment3.onSelected();
tab3.setSelected(true);
tab1.setSelected(false);
tab2.setSelected(false);
if (fragment1 != null && !fragment1.isHidden()) {
transaction.hide(fragment1);
}
if (fragment2 != null && !fragment2.isHidden()) {
transaction.hide(fragment2);
}
MobclickAgent.onEvent(this, "fragment3");
} else {
BLog.e(TAG, "error newTabIndex");
return;
}
transaction.commit();
currentTab = newTab;
}
public Handler getHander() {
return handler;
}
static final class MainHandler extends Handler {
MainActivity activity;
public MainHandler(MainActivity activity) {
this.activity = activity;
}
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case MainActivity.MSG_SWITCH_TAB: {
switch (msg.arg1) {
case R.id.activity_main_tab1:
activity.tab1.performClick();
break;
case R.id.activity_main_tab2:
activity.tab2.performClick();
break;
case R.id.activity_main_tab3:
activity.tab3.performClick();
break;
}
break;
}
case MainActivity.MSG_LOGOUT: {
activity.changeTab(1);
break;
}
default:
break;
}
}
}
}