MainActivity中启动Fragment,Fragment启动OtherActivity,在OtherActivity中的数据库服务启动不了需要返回到Fragment中

Android中fragment与activity之间的交互(两种实现方式)
转载 &更新时间:日 14:27:21 & 作者:潘侯爷
本篇文章主要介绍了Android中fragment与activity之间的交互(两种实现方式),相信对大家学习会有很好的帮助,需要的朋友一起来看下吧
(未给Fragment的布局设置BackGound)
之前关于Android中Fragment的概念以及创建方式,我专门写了一篇博文《》,就如何创建Fragment混合布局做了详细的分析,今天就来详细说道说道Fragment与宿主Activity之间是如何实现数据交互的。
我们可以这样理解,宿主Activity中的Fragment之间要实现信息交互,就必须通过宿主Activity,Fragment之间是不可能直接实现信息交互的。
Fragment与Fragment或者说与Activity(将部分Fragment包含的的布局直接部署在Activity中)的数据交互我个人总结了两种实现方式:
(1)通过Bundle传参,从而实现Fragment之间的数据交互
(2)通过在Fragment内部定义一个回调接口,并需要宿主Activity实现它。当Activity通过接口接收到回调时,可以在必要时与布局中的其它Fagment共享信息。
在开始两种实现方式之前,先向大家介绍并演示其中一些个性化参数不同设置后的效果,之前向大家介绍过要管理宿主Activity中的Fragment,必须得到FragmentManager(碎片管理),而FragmentManager要实现对Fragment的增删改换等操作(事务),则必须启用FragmentTransaction,这里主要向大家演示添加FragmentTransaction.addToBackStack方法前后以及在未给Fragment设置BackGround的情况下使用FragmentTransaction.add与replace的不同效果,更加详细的方法介绍以及用法请大家参照API详细了解。
未设置FragmentTransaction.addToBackStack方法演示效果(打开多层后,按回退,直接退出程序):
设置FragmentTransaction.addToBackStack方法演示效果(这里没有设置监听后台栈变化的监听器进行判断处理):
貌似看不出差别,其实在按回退键时,这个是根据打开的顺序,逐个退出
未给Fragment设置BackGround的情况下使用FragmentTransaction.add的演示效果:
注意啦注意啦,这里着重声明的是未给右侧Fragment的布局设置BackGound的情况,如果设置的BackGound,那么实现效果和replace没有差别,这也是今天超时这么多的主要原因
不同的实现效果大家都看到了,我们开始演示实现代码:
我们使用的是Android中Fragment的两种创建方式中(通过java代码将fragment添加到宿主Activity中)的布局文件,布局文件代码请参考
(1)通过Bundle传参
第一步:右侧Fragment对应的java代码RightFragment.java:
import android.app.F
import android.os.B
import android.view.LayoutI
import android.view.V
import android.view.ViewG
import android.widget.TextV
* Created by panchengjia on .
public class RightFragment extends Fragment {
public RightFragment() {
/*Fragment的传参方式(通过Bundle对象来传递)
*采用这种传参方式可以保证用户在横竖屏切换时所
* 传递的参数不会丢失
public static RightFragment getInstance(String data){
RightFragment rightFragment = new RightFragment();
Bundle bundle = new Bundle();
//将需要传递的字符串以键值对的形式传入bundle
bundle.putString("data",data);
rightFragment.setArguments(bundle);
return rightF
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view =inflater.inflate(R.layout.right_layout,container,false);
TextView tv = (TextView) view.findViewById(R.id.tv);
String data = getArguments().getString("data");
tv.setText(data);
public void onPause() {
super.onPause();
第二步:主布局宿主Activity对应的java实现代码MainActivity.java:
import android.app.FragmentM
import android.app.FragmentT
import android.support.v7.app.AppCompatA
import android.os.B
import android.view.V
import android.widget.B
public class Main3Activity extends AppCompatActivity {
FragmentManager fragmentM
FragmentTransaction fragmentT
LeftFragment leftF
Button panhouye,//声明leftfragment中的按钮
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
//获取fragmentManager
fragmentManager=getFragmentManager();
//通过findFragmentById找到leftFragment
leftFragment = (LeftFragment) fragmentManager.findFragmentById(R.id.left);
//找到对应的导航按钮并设置点击事件
panhouye = (Button) leftFragment.getView().findViewById(R.id.panhouye);
bikonghai = (Button) leftFragment.getView().findViewById(R.id.bikonghai);
panhouye.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
//调用方法修改rightfragment中的文本内容
switchButton("我是潘侯爷");
bikonghai.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
switchButton("我是碧空海");
//设置打开Activity后rightfragment中默认的文本内容
switchButton("我是潘侯爷");
//定义方法填充Activity右侧的fragment,并通过传参修改文本内容
public void switchButton(String data){
fragmentManager=getFragmentManager();
fragmentTransaction=fragmentManager.beginTransaction();
//通过调用RightFragment中的getInstance方法传修改文本
RightFragment rightFragment =RightFragment.getInstance(data);
//此时使用add方法会造成右侧fragment中文本重叠(未设置BackGround时)
fragmentTransaction.replace(R.id.right,rightFragment);
fragmentTransaction.commit();
(2)接口回调
第一步:左侧fragment的java实现代码LeftFragment.java文件
本次演示通过点击左侧Fragment中的按钮点击触发与右侧Fragment的数据交互,所以需在本类中添加回调接口用于在宿主Activity中回调修改右侧文本的方法。
import android.app.F
import android.os.B
import android.view.LayoutI
import android.view.V
import android.view.ViewG
import android.widget.B
* Created by panchengjia on .
public class LeftFragment extends Fragment implements View.OnClickListener{
//声明内部定义的回调接口
CallBackListener callBackL
//声明布局中事件触发按钮
Button panhouye,
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//通过getActivity()获取用于回调修改文本方法的接口
callBackListener= (CallBackListener) getActivity();
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view =inflater.inflate(R.layout.left_layout,container,false);
panhouye = (Button) view.findViewById(R.id.panhouye);
bikonghai= (Button) view.findViewById(R.id.bikonghai);
panhouye.setOnClickListener(this);//为按钮设置监听事件
bikonghai.setOnClickListener(this);
public void onPause() {
super.onPause();
public void onClick(View v) {
switch (v.getId()){
case R.id.panhouye:
callBackListener.setText("我是潘侯爷");
case R.id.bikonghai:
callBackListener.setText("我是碧空海");
//设置用于修改文本的回调接口
public static interface CallBackListener{
public void setText(String data);
第二步:右侧fragment的java实现代码RightFragment.java文件
本次演示右侧为文本显示fragment,也是点击左侧的按钮后,通过改变文本的形式体现点击事件的处理,所以必须在本Fragment类中添加文本修改的方法。
import android.app.F
import android.os.B
import android.support.annotation.N
import android.view.LayoutI
import android.view.V
import android.view.ViewG
import android.widget.TextV
* Created by panchengjia on .
public class RightFragment extends Fragment {
//声明fragment中的TextView,用于建立修改文本的方法
private TextV
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
public void onPause() {
super.onPause();
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view =inflater.inflate(R.layout.right_layout,container,false);
tv = (TextView) view.findViewById(R.id.tv);
//在这里设置修改自身文本的方法
public void setFragmentText(String data){
tv.setText(data);
第三步:主界面宿主Acvtivity的java实现代码MainActivity.java文件(为了接收Fragment事件回调,宿主的Activity必须实现回调接口):
import android.app.FragmentM
import android.app.FragmentT
import android.support.v7.app.AppCompatA
import android.os.B
public class MainActivity extends AppCompatActivity implements LeftFragment.CallBackListener{
FragmentManager fragmentM
FragmentTransaction fragmentT
/*leftfragment已经在主布局文件中声明,
*这里仅需要通过代码声明部署rightFragment
RightFragment rightF
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化主布局(主要目的是为主布局填充fragments)
initActivity();
private void initActivity() {
fragmentManager = getFragmentManager();
fragmentTransaction = fragmentManager.beginTransaction();
rightFragment = new RightFragment();
fragmentTransaction.add(R.id.right,rightFragment);
fragmentTransaction.commit();
//接口实现方法,用于回调RightFragment类中定义的修改文本的方法
public void setText(String data) {
rightFragment.setFragmentText(data);
本次演示接口回调的实现方式看起来比使用bundle传参的代码量大了一些,但在实际开发中,我们面临的Fragment不仅仅是眼前的这两个,而使用接口回调实现交互数据的方法能更好的实现重用Fragment UI组件,从根本上解决的大量代码重用的问题,建议大家熟练掌握接口回调来实现数据交互。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持脚本之家!
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具点击这里,将文章分享到自己的动态
【原创】Android中Activity和Fragment通信
活动(Activity)和碎片(Fragment)在Android开发中占着非常重要的作用,每一个开发者想要开发出丰富多彩的Android项目,那就必须要好好了解这两位小伙伴才行。那么接下来,就让皮卡丘带着大家围观下这两位小伙伴的“搞基”之旅吧。
1、Activity使用Fragment中的方法
这个是比较简单的,首先,因为一般情况下Fragment是依附于Activity的,所以在Activity中可以先获取到Fragment的实例,然后就可以直接调用Fragment中的方法了。我们用代码来验证一下,先建一个MyFragment的类,然后在MyFragment中写一个方法:
public void toastShow() {
Log.i("MyFragment", "去吧皮卡丘");
然后在activity中创建MyFragment实例对象,并且调用toastShow()方法:
fragment = new MyFragment();
fragment.toastShow();
OK,执行代码,查看日志
方法执行成功!!!可喜可贺可喜可贺
2、Fragment使用Activity中的方法
所谓好基友,当然不会只是Activity使用Fragment的方法。在Fragment中也可以以类似的途径使用Activity的方法:先以getActivity的方式获取到Activity,然后就可以使用方法了(毕竟好基友,相互赠送礼物的方式比较像也是可以理解的嘛)。但是,这里有一个非常重要的东西要理解,那就是:Fragment中getActivity()获取到的对象不能直接用,必须要类型强转!!!(MainActivity)getActivity()这样才可以!
我们在MainActivity中写一个方法
public String getTestString() {
return "成功执行activity中的方法";
然后在MyFragment中调用他
case R.id.button1:
String text1 = ((MainActivity)getActivity()).getTestString();
tv_test.setText(text1);
我们打开模拟器,来看看效果
方法执行成功!!!可喜可贺可喜可贺
3、Activity响应Fragment中的点击事件
终于到了最激动人心,最基情满满的功能了。
我们试想下这样一种场景:在一个Fragment里面按下一个按钮,然后Activity中根据Fragment中传递过来的参数执行相应的方法。这样的场景其实是非常实用的,我们可以通过接口的方式来实现这样的功能。我们在MyFragment中定义这样的接口
public interface OnButton2ClickListener {
public void OnButton2ClickListener(String showText);
public void onAttach(Activity activity) {
// TODO Auto-generated method stub
super.onAttach(activity);
mListener = (OnButton2ClickListener)
} catch (Exception e) {
// TODO: handle exception
throw new ClassCastException(activity.toString() + "must implement OnButton2ClickListener");
如果MainActivity没有实现这个接口,MyFragment就会抛出ClassCastException,如果成功了,那么MyFragment就可以调用mListener的方法来与MainActivity共享事件。
OK,那我们接着在MyFragment中添加代码:
case R.id.button2:
String showText = "去吧小火龙";
mListener.OnButton2ClickListener(showText);
然后在MainActivity中实现接口OnButton2ClickListener
public class MainActivity extends Activity implements OnClickListener,
OnButton2ClickListener {
public void OnButton2ClickListener(String showText) {
// TODO Auto-generated method stub
TextView tv_activity = (TextView) findViewById(R.id.tv_activity);
tv_activity.setText(showText);
我们快点打开模拟器来查看Activity和Fragment“爱的结晶”吧
点击MyFragment中的“接口方式”按钮之后
大家看到了吗?屏幕最下面的文字变成了“去吧皮卡丘”,说明Activity的确响应了Fragment中的点击事件,可喜可贺可喜可贺~~~
接下来贴出本项目所有的代码,皮卡丘写了非常详细的注解,相信就算是新手小伙伴们也能很快理解。
因为Fragment存在版本兼容性问题,所以建议将AndroidManifest.xml中的minSdkVersion设置成android:minSdkVersion=&11&
MainActivity:
package com.example.
import com.example.fragment.MyFragment.OnButton2ClickL
import android.os.B
import android.view.V
import android.view.View.OnClickL
import android.widget.B
import android.widget.TextV
import android.app.A
import android.app.FragmentM
import android.app.FragmentT
public class MainActivity extends Activity implements OnClickListener,
OnButton2ClickListener {
private Button btn1, btn2;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
// 创建MyFragment对象
fragment = new MyFragment();
private void initView() {
// TODO Auto-generated method stub
btn1 = (Button) findViewById(R.id.btn1);
btn2 = (Button) findViewById(R.id.btn2);
btn1.setOnClickListener(this);
btn2.setOnClickListener(this);
private void getFragment() {
// TODO Auto-generated method stub
// FragmentManager可以用来管理Activity中的fragment,在Android 3.0(即API 11)时引入,所
// 以对于之前的版本,需要使用support library中的FragmentActivity,并且使用getSupportFragmentManager()方法
FragmentManager fragmentManager = getFragmentManager();
// FragmentTransaction 每一个事务都是同时要执行的一套变化,必须调用commit()才能生效
FragmentTransaction beginTransaction = fragmentManager.beginTransaction();
// 再添加之前先移除之前的fragment
beginTransaction.remove(fragment);
// 在beginTransaction事务中加入add动作
beginTransaction.add(R.id.fragment_ll, fragment);
// 如果添加这一行代码,那么用户按下back时会返回前一个fragment状态
beginTransaction.addToBackStack(null);
// 执行事务
beginTransaction.commit();
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.btn1:
getFragment();
case R.id.btn2:
fragment.toastShow();
// Activity中的方法,提供给Fragment调用
public String getTestString() {
return "成功执行activity中的方法";
// 实现Fragment中的接口
public void OnButton2ClickListener(String showText) {
// TODO Auto-generated method stub
TextView tv_activity = (TextView) findViewById(R.id.tv_activity);
tv_activity.setText(showText);
MyFragment:
package com.example.
import android.app.A
import android.app.F
import android.os.B
import android.util.L
import android.view.LayoutI
import android.view.V
import android.view.View.OnClickL
import android.view.ViewG
import android.widget.B
import android.widget.TextV
public class MyFragment extends Fragment implements OnClickListener {
OnButton2ClickListener mL
private Button button1;
private Button button2;
private TextView tv_
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
View view = inflater.inflate(R.layout.fragment, container, false);
button1 = (Button) view.findViewById(R.id.button1);
button2 = (Button) view.findViewById(R.id.button2);
tv_test = (TextView) view.findViewById(R.id.tv_test);
button1.setOnClickListener(this);
button2.setOnClickListener(this);
// Fragment中的方法,供Activity调用
public void toastShow() {
Log.i("MyFragment", "去吧皮卡丘");
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.button1:
// 调用Activity中的方法
String text1 = ((MainActivity)getActivity()).getTestString();
tv_test.setText(text1);
case R.id.button2:
// fragment和activity共享点击事件
String showText = "去吧皮卡丘";
mListener.OnButton2ClickListener(showText);
// 定义接口
public interface OnButton2ClickListener {
public void OnButton2ClickListener(String showText);
// 如果MainActivity没有实现这个接口,MyFragment就会
// 抛出ClassCastException,如果成功了,那么MyFragment就
// 可以调用mListener的方法来与MainActivity共享事件。
public void onAttach(Activity activity) {
// TODO Auto-generated method stub
super.onAttach(activity);
mListener = (OnButton2ClickListener)
} catch (Exception e) {
// TODO: handle exception
throw new ClassCastException(activity.toString() + "must implement OnButton2ClickListener");
activity_main.xml
&RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" &
&LinearLayout
android:id="@+id/ll_bottomBtn"
android:layout_width="match_parent"
android:layout_height="150dp"
android:orientation="vertical"
android:layout_alignParentBottom="true"
android:id="@+id/btn1"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:text="跳转到Fragment"
android:id="@+id/btn2"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:text="Activity使用Fragment的方法"
android:id="@+id/tv_activity"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:text="Activity"
android:gravity="center"
&/LinearLayout&
&LinearLayout
android:id="@+id/fragment_ll"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@id/ll_bottomBtn"
android:orientation="vertical"
android:background="#A0A0A0"
&&/LinearLayout&
&/RelativeLayout&
fragment.xml
&?xml version="1.0" encoding="utf-8"?&
&RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" &
android:id="@+id/tv_test"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Fragment"
android:layout_centerInParent="true"
android:textSize="20sp"
android:id="@+id/button1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="getActivity()方式"
android:layout_below="@id/tv_test"
android:layout_centerHorizontal="true"
android:id="@+id/button2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/button1"
android:text="接口方式"
&/RelativeLayout&
若觉得本文不错,就分享一下吧!
评论加载中...
看过此文的用户,还看了以下文章
正在加载中
移动开发工程师
作者相关文章安卓中,在MainActivity中,打开并显示一个Fragment派生类MyFragment1,写出其的代码片段。_百度知道
安卓中,在MainActivity中,打开并显示一个Fragment派生类MyFragment1,写出其的代码片段。
写个最简单的就行了
我有更好的答案
Button button = view.findViewById(xxx);button.setOnClickListener(new View.OnClickListener(
onClick(View view){
startActivity(new Intent(getActivity(), SettingActivity.class));
不是要activity的跳转,是在MainActivity中,打开并显示一个Fragment。
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。&>&fragment activity与fragment相互传值
fragment与fragment跳转
fragment activity与fragment相互传值
fragment与fragment跳转
上传大小:3.06MB
自己项目中用到fragment搭建框架,从网上找得一个demo,实现activity与fragment相互传值;fragment与fragment跳转。跟大家分享
综合评分:5
{%username%}回复{%com_username%}{%time%}\
/*点击出现回复框*/
$(".respond_btn").on("click", function (e) {
$(this).parents(".rightLi").children(".respond_box").show();
e.stopPropagation();
$(".cancel_res").on("click", function (e) {
$(this).parents(".res_b").siblings(".res_area").val("");
$(this).parents(".respond_box").hide();
e.stopPropagation();
/*删除评论*/
$(".del_comment_c").on("click", function (e) {
var id = $(e.target).attr("id");
$.getJSON('/index.php/comment/do_invalid/' + id,
function (data) {
if (data.succ == 1) {
$(e.target).parents(".conLi").remove();
alert(data.msg);
$(".res_btn").click(function (e) {
var parentWrap = $(this).parents(".respond_box"),
q = parentWrap.find(".form1").serializeArray(),
resStr = $.trim(parentWrap.find(".res_area_r").val());
console.log(q);
//var res_area_r = $.trim($(".res_area_r").val());
if (resStr == '') {
$(".res_text").css({color: "red"});
$.post("/index.php/comment/do_comment_reply/", q,
function (data) {
if (data.succ == 1) {
var $target,
evt = e || window.
$target = $(evt.target || evt.srcElement);
var $dd = $target.parents('dd');
var $wrapReply = $dd.find('.respond_box');
console.log($wrapReply);
//var mess = $(".res_area_r").val();
var mess = resS
var str = str.replace(/{%header%}/g, data.header)
.replace(/{%href%}/g, 'http://' + window.location.host + '/user/' + data.username)
.replace(/{%username%}/g, data.username)
.replace(/{%com_username%}/g, data.com_username)
.replace(/{%time%}/g, data.time)
.replace(/{%id%}/g, data.id)
.replace(/{%mess%}/g, mess);
$dd.after(str);
$(".respond_box").hide();
$(".res_area_r").val("");
$(".res_area").val("");
$wrapReply.hide();
alert(data.msg);
}, "json");
/*删除回复*/
$(".rightLi").on("click", '.del_comment_r', function (e) {
var id = $(e.target).attr("id");
$.getJSON('/index.php/comment/do_comment_del/' + id,
function (data) {
if (data.succ == 1) {
$(e.target).parent().parent().parent().parent().parent().remove();
$(e.target).parents('.res_list').remove()
alert(data.msg);
//填充回复
function KeyP(v) {
var parentWrap = $(v).parents(".respond_box");
parentWrap.find(".res_area_r").val($.trim(parentWrap.find(".res_area").val()));
评论共有9条
不错,但是问题就是fragment数据添加了,感谢分享
好像可以使用,但是我没有使用他的方法!借鉴了。知道怎么去实现!
不知道好不好,studio的没法用
kevinpeng1990回复lotus48
工具就是android studio,不要导入,直接打开.
VIP会员动态
CSDN下载频道资源及相关规则调整公告V11.10
下载频道用户反馈专区
下载频道积分规则调整V1710.18
spring mvc+mybatis+mysql+maven+bootstrap 整合实现增删查改简单实例.zip
资源所需积分/C币
当前拥有积分
当前拥有C币
输入下载码
为了良好体验,不建议使用迅雷下载
fragment activity与fragment相互传值
fragment与fragment跳转
会员到期时间:
剩余下载个数:
剩余积分:0
为了良好体验,不建议使用迅雷下载
积分不足!
资源所需积分/C币
当前拥有积分
您可以选择
程序员的必选
绿色安全资源
资源所需积分/C币
当前拥有积分
当前拥有C币
为了良好体验,不建议使用迅雷下载
资源所需积分/C币
当前拥有积分
当前拥有C币
为了良好体验,不建议使用迅雷下载
资源所需积分/C币
当前拥有积分
当前拥有C币
您的积分不足,将扣除 10 C币
为了良好体验,不建议使用迅雷下载
无法举报自己的资源
你当前的下载分为234。
你还不是VIP会员
开通VIP会员权限,免积分下载
你下载资源过于频繁,请输入验证码
您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:!
若举报审核通过,可返还被扣除的积分
被举报人:
kevinpeng1990
举报的资源分:
请选择类型
资源无法下载 ( 404页面、下载失败、资源本身问题)
资源无法使用 (文件损坏、内容缺失、题文不符)
侵犯版权资源 (侵犯公司或个人版权)
虚假资源 (恶意欺诈、刷分资源)
含色情、危害国家安全内容
含广告、木马病毒资源
*详细原因:
fragment activity与fragment相互传值
fragment与fragment跳转

我要回帖

更多关于 启动数据库 的文章

 

随机推荐