package com.athena.asm; import android.app.ProgressDialog; import android.content.Intent; import android.content.res.Configuration; import android.os.Bundle; import android.support.v4.app.FragmentManager; import android.view.KeyEvent; import com.actionbarsherlock.app.SherlockFragmentActivity; import com.athena.asm.fragment.SubjectListFragment; public class SubjectListActivity extends SherlockFragmentActivity implements ProgressDialogProvider, OnOpenActivityFragmentListener { private ProgressDialog m_pdialog; private SubjectListFragment m_fragment; @Override protected void onCreate(Bundle savedInstanceState) { setTheme(aSMApplication.THEME); super.onCreate(savedInstanceState); //requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.subject_list_activity); // http://stackoverflow.com/questions/8181157/castingproblem-with-findfragmentbyid FragmentManager fm = getSupportFragmentManager(); m_fragment = (SubjectListFragment) fm.findFragmentById(R.id.subject_list_fragment); getSupportActionBar().setDisplayShowHomeEnabled(false); //getSupportActionBar().setDisplayHomeAsUpEnabled(true); setRequestedOrientation(aSMApplication.ORIENTATION); } @Override public void onConfigurationChanged(Configuration newConfig) { // do nothing to stop onCreated super.onConfigurationChanged(newConfig); } public void showProgressDialog() { if (m_pdialog == null) { m_pdialog = new ProgressDialog(this); m_pdialog.setMessage("加载版面列表中..."); m_pdialog.show(); } } public void dismissProgressDialog() { if (m_pdialog != null) { m_pdialog.cancel(); m_pdialog = null; } } @Override public void onOpenActivityOrFragment(String target, Bundle bundle) { if (target.equals(ActivityFragmentTargets.POST_LIST)) { Intent intent = new Intent(); intent.putExtras(bundle); intent.setClassName("com.athena.asm", PostListActivity.class.getName()); startActivityForResult(intent, 0); } } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN || keyCode == KeyEvent.KEYCODE_VOLUME_UP) { return m_fragment.onKeyDown(keyCode); } else { return super.onKeyDown(keyCode, event); } } // http://stackoverflow.com/questions/4500354/control-volume-keys @Override public boolean onKeyUp(int keyCode, KeyEvent event) { // disable the beep sound when volume up/down is pressed if ((keyCode == KeyEvent.KEYCODE_VOLUME_UP) || (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN)) { return true; } return super.onKeyUp(keyCode, event); } }