package com.zhong.activity; import java.util.List; import java.util.Map; import android.app.ProgressDialog; import android.content.Context; import android.content.Intent; import android.graphics.Bitmap; import android.os.AsyncTask; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentTransaction; import android.util.Log; import android.view.KeyEvent; import android.view.View; import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.TextView; import com.zhong.app.MyApplication; import com.zhong.config.MyConfig; import com.zhong.fragment.CollectFragment; import com.zhong.fragment.ContentFragment; import com.zhong.fragment.CopyrightFragment; import com.zhong.fragment.FeedbackFragment; import com.zhong.fragment.FunTeaFragment; import com.zhong.fragment.FunTeaFragment.OnMyButtonClickListener; import com.zhong.helper.JsonHelper; import com.zhong.helper.MyHttpClientHelper; /** * 功能页,根据获取跳转信息的不同,结果也不同。 * * @author 仲丛旭 * */ public class FunctionActivity extends FragmentActivity implements OnMyButtonClickListener { private final String TAG = "FunctionActivity"; /** 可以放fragment的控件 */ private FrameLayout frameLayout_fun; /** 返回上一页 */ private ImageView imageView_fun_return; /** 标题栏显示的文字 */ private TextView textView_fun_title; /** 界面中显示的标记文字,0:查百科,1:我的收藏,2浏览记录,3:版权信息,4:意见反馈,5:搜索内容 */ private String[] titleName = { "查百科", "我的收藏", "浏览记录", "版权信息", "意见反馈", "" }; /** Fragment管理器 */ private FragmentManager fragmentManager; /** 每一个fragment */ private Fragment fragment; /** 缓存图片的map */ private Map<String, Bitmap> cacheImageMap; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); int titleTag = initData(); setContentView(R.layout.activity_function); frameLayout_fun = (FrameLayout) findViewById(R.id.frameLayout_fun); imageView_fun_return = (ImageView) findViewById(R.id.imageView_fun_return); imageView_fun_return.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { onKeyDown(4,null); } }); textView_fun_title = (TextView) findViewById(R.id.textView_fun_title); initFragment(titleTag, null); } /** * 当按返回键的时候fragment开始出栈 */ @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if(keyCode==4){ textView_fun_title.setText(titleName[0]); if(fragmentManager.getBackStackEntryCount()==1){ finish(); }else{ fragmentManager.popBackStack(); } return true; } return super.onKeyDown(keyCode, event); } private void initFragment(int titleTag, String text) { String titleStr = ""; switch (titleTag) { case 0: Log.i(TAG, "titleTag,initLayout()==" + titleTag); titleStr = titleName[0]; fragment = new FunTeaFragment(FunctionActivity.this); break; case 1: titleStr = titleName[1]; fragment = new CollectFragment("2", FunctionActivity.this); break; case 2: titleStr = titleName[2]; fragment = new CollectFragment("1", FunctionActivity.this); break; case 3: titleStr = titleName[3]; fragment = new CopyrightFragment(); break; case 4: titleStr = titleName[4]; fragment = new FeedbackFragment(); break; case 5: textView_fun_title.setText(text); String urlStr = MyConfig.SEARCH + "&search=" + text; new FunTask(FunctionActivity.this, urlStr).execute(urlStr); return; default: break; } if (fragment != null) { fragment.setArguments(getIntent().getExtras()); FragmentTransaction fragmentTransaction = fragmentManager .beginTransaction(); fragmentTransaction.addToBackStack(titleStr);//设置每个fragment显示标题 textView_fun_title.setText(titleStr); fragmentTransaction.replace(R.id.frameLayout_fun, fragment) .commit(); } } /** * 初始化数据,主要判断一下应该显示哪种fragment */ private int initData() { cacheImageMap = ((MyApplication) this.getApplication()) .getCacheImageMap(); fragmentManager = this.getSupportFragmentManager(); Intent intent = getIntent(); String titleTagStr = intent.getStringExtra("titleTagStr"); Log.i(TAG, "titleTagStr==" + titleTagStr); int titleTag = 0; try { titleTag = Integer.parseInt(titleTagStr); } catch (NumberFormatException e) { Log.i(TAG, "==强制类型转换出现异常"); e.printStackTrace(); } return titleTag; } /** * 访问网络得到搜索页的数据 * * @author 仲丛旭 * */ class FunTask extends AsyncTask<String, Void, Object> { private Context context; private ProgressDialog pDialog; private String urlStr; public FunTask(Context context, String urlStr) { this.context = context; this.urlStr = urlStr; pDialog = new ProgressDialog(this.context); pDialog.setTitle("请稍等"); pDialog.setMessage("正在加载..."); } @Override protected void onPreExecute() { super.onPreExecute(); pDialog.show(); } @Override protected Object doInBackground(String... params) { String jsonString = MyHttpClientHelper.loadTextFromURL(params[0], "UTF-8");// 网络访问得到数据 List<Map<String, Object>> list = JsonHelper.jsonStringToList( jsonString, new String[] { "title", "source", "nickname", "create_time", "wap_thumb", "id" }, "data"); return list; } @Override protected void onPostExecute(Object result) { super.onPostExecute(result); fragment = new ContentFragment(urlStr, (List<Map<String, Object>>) result, cacheImageMap); fragment.setArguments(getIntent().getExtras()); FragmentTransaction fragmentTransaction = fragmentManager .beginTransaction(); fragmentTransaction.addToBackStack(null); fragmentTransaction.replace(R.id.frameLayout_fun, fragment) .commit(); pDialog.dismiss(); } } @Override public void onMyButtonClick(int titleTag, String text) { initFragment(titleTag, text); } }