在网上你可以看到很多Fragment都是用接口回调来携带数据跳转到Activity。
我觉得好麻烦,于是你们可以用我下面的方法
而我们可以直接使用下面这个方法:
protected void startActivity(Bundle bundle, Class<?> cls) { Intent intent = new Intent(getActivity(), cls); intent.putExtras(bundle); //resolveActivity是Intent类里面方法 if (intent.resolveActivity(getActivity().getPackageManager()) != null) //那这里面是什么呢? startActivity(intent); }
点进去会发现这个地方才是具体实现的startActivity的地方。
//此类继承了Fragment类,重写Fragment类的startActivity方法 @Override public void startActivity(Intent intent) { if (intent == null) { PageLog.e("[startActivity failed]: intent == null"); return; } if (CoreConfig.getContext().getPackageManager().resolveActivity(intent, PackageManager.MATCH_DEFAULT_ONLY) != null) { try { //再点进这个父类的方法,是什么呢? super.startActivity(intent); } catch (Exception e) { e.printStackTrace(); PageLog.e(e); } } else { PageLog.e("[resolveActivity failed]: " + (intent.getComponent() != null ? intent.getComponent() : intent.getAction()) + " do not register in manifest"); } }
此处就是最普通的startActivity方法了,上面的都是在这个startActivity方法的基础上进行"加工"。
//位于Fragment类中 public void startActivity(Intent intent) { this.startActivity(intent, (Bundle)null); }