有时候我们接手别人的项目,看到getIntent().getExtras()的方法而感到头疼,因为不知道对方什么时候把参数保存起来的。这篇博客主要针对这个问题对intent进行了封装。废话不多说,直接上代码。
package com.example.wmk.utils; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.os.Bundle; /** * Created by 老王 on 2017/1/12. */ public class IntentUtils { /** * @param context 上下文 * @param targetActivity 跳转的下一个Activity * @param bundle * @param isFinish 是否关闭当前页面 */ public static void intent(Context context, Class<? extends Activity> targetActivity, Bundle bundle, boolean isFinish) { Intent i = new Intent(context, targetActivity); if (bundle != null) { i.putExtras(bundle); } context.startActivity(i); if (isFinish) { ((Activity) context).finish(); } } }上面这个工具类,主要是对意图进行封装,第三个参数Bundle就是这篇博客主要讲解的地方。我在主界面Fragment页面进行了一个页面跳转,代码非常简单,如下:
/** * 食堂监听事件 */ private void initCanteenEvents() { View.OnClickListener onClickListener = new View.OnClickListener() { @Override public void onClick(View v) { switch (v.getId()) { case R.id.ll_homeCanteenFirst: IntentUtils.intent(getActivity(), CanteenFirstActivity.class, CanteenFirstActivity.putDataToIntent(), false); break; } } }; llHomeCanteenFirst.setOnClickListener(onClickListener); }上面的代码,主要就是一个OnClickListener的监听事件,没啥好多说的。主要看CanteenFirstActivity.putDataToIntent()这行代码,如下图3,所示。
2和3写在一起,避免了在2中到处找3的目的。上述图片发现看的不是很清楚,看官可以查看下面代码,再抽取上面图片的内容。
package com.example.wmk.activity.canteenActivity; import android.content.Intent; import android.os.Bundle; import android.support.v4.widget.SwipeRefreshLayout; import android.view.KeyEvent; import android.widget.ListView; import android.widget.Toast; import com.example.wmk.R; import com.example.wmk.activity.MainActivity; import com.example.wmk.activity.baseActivity.BaseActivity; import com.example.wmk.adapter.OPAdapter; import com.example.wmk.bean.OPBean; import com.example.wmk.connector.OnClickDialogItemListener; import com.example.wmk.constant.Constant; import com.example.wmk.db.DBUtils; import com.example.wmk.utils.DialogUtils; import com.example.wmk.utils.IntentUtils; import com.lidroid.xutils.exception.DbException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.ButterKnife; import butterknife.Unbinder; import static com.example.wmk.constant.Constant.F0; /** * 一食堂(listView的使用) */ public class CanteenFirstActivity extends BaseActivity implements SwipeRefreshLayout.OnRefreshListener { @BindView(R.id.swipeRefresh_canteen_first) SwipeRefreshLayout swipeRefreshCanteenFirst; @BindView(R.id.lstView_canteen_first) ListView lstViewCanteenFirst; private List<OPBean> lstOPBean; private List<OPBean> opBeanList; private OPAdapter adapter; private int index = 0; private boolean isRefresh = true; private Unbinder unbinder; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_canteen_first); unbinder = ButterKnife.bind(this); try { lstOPBean = DBUtils.getInstance(this).findAll(OPBean.class); } catch (DbException e) { e.printStackTrace(); } opBeanList = getDataFromIntent(); super.initSwipeRefreshLayout(this, swipeRefreshCanteenFirst); initListView(); } public List<OPBean> getDataFromIntent() { List<OPBean> opBeenList = new ArrayList<>(); Intent intents = getIntent(); if (intents != null) { Bundle bundle = intents.getExtras(); if (bundle != null) { opBeenList.add((OPBean) bundle.getParcelable(Constant.LF)); opBeenList.add((OPBean) bundle.getParcelable(Constant.SL)); opBeenList.add((OPBean) bundle.getParcelable(Constant.WSP)); } } return opBeenList; } public static Bundle putDataToIntent() { Bundle bundle = new Bundle(); bundle.putParcelable(Constant.LF, new OPBean("路飞", "assets://image/xp01.png", "船长,成为海贼王的男人", "$500,000,000-")); bundle.putParcelable(Constant.SL, new OPBean("索隆", "assets://image/xp02.png", "副船长,世界第一的大剑豪", "$320,000,000-")); bundle.putParcelable(Constant.WSP, new OPBean("乌索普", "assets://image/xp03.png", "大骗子,勇敢的海上战士", "$200,000,000-")); return bundle; } /** * 初始化ListView */ private void initListView() { adapter = new OPAdapter(this); notifyDataSetChanged(lstOPBean); lstViewCanteenFirst.setAdapter(adapter); } /** * 刷新列表 */ public void notifyDataSetChanged(List<OPBean> datas) { adapter.clear(); adapter.setDatas(datas); adapter.notifyDataSetChanged(); } @Override public void onRefresh() { if (opBeanList != null) { if (index < opBeanList.size()) { lstOPBean.add(opBeanList.get(index)); } else { isRefresh = false; Toast.makeText(this, "没有更多的数据", Toast.LENGTH_SHORT).show(); //停止刷新 swipeRefreshCanteenFirst.setRefreshing(false); } } if (isRefresh) { new Thread(new Runnable() { @Override public void run() { try { Thread.sleep(2000); mHandler.post(new Runnable() { @Override public void run() { notifyDataSetChanged(lstOPBean); swipeRefreshCanteenFirst.setRefreshing(false); index++; } }); } catch (InterruptedException e) { e.printStackTrace(); } } }).start(); } } @Override protected void onDestroy() { super.onDestroy(); unbinder.unbind(); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { switch (keyCode) { case KeyEvent.KEYCODE_BACK: DialogUtils.dialogCommon(this, getStr(R.string.quit), new OnClickDialogItemListener() { @Override public void onClick(int flag) { switch (flag) { case F0: IntentUtils.intent(CanteenFirstActivity.this, MainActivity.class, null, true); break; } } }); break; } return super.onKeyDown(keyCode, event); } }