将fragment的参数传到mainActivity中

day_moon 2016-01-11 06:16:22
1、一个fragment1类,代码如下:

public static final int PAGE_SIX=5;
public void onClick(View v) {
switch (v.getId()) {
case R.id.ib_update: //点击到该按钮时
mButtonInterface.onButtonSelect(PAGE_SIX); //调用下面的接口进行传值
break;
}
}

//定义一个接口
private buttonSelectInterface mButtonInterface;
public interface buttonSelectInterface {
public void onButtonSelect(int button);
}


2、mainActivity类中继承buttonSelectInterface:

//传递过来的参数
@Override
public void onButtonSelect(int button) {
switch(button){
case PAGE_SIX:
vpager.setCurrentItem(PAGE_SIX);
break;
}
}
跪求大神!!!
问题:调试发现点击按钮时,可以看到一个fragment1类中的值是5(由于接口不能设置断点,没看到在fragment1类中的接口botton的值,红色部分),但是在mainActivity类中,botton的值是没有的。也就是说fragment1类中
接口的值没有传到mainactivity过来。
...全文
264 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
day_moon 2016-01-15
  • 打赏
  • 举报
回复
已经继承了。害死没有。可是运行就是报错。代码我已经贴出了。
雨焰 2016-01-12
  • 打赏
  • 举报
回复
引用 2 楼 day_moon 的回复:
在Fragment1中添加下面代码: public void setListener(buttonSelectInterface button){ this.mButtonInterface = button; }; mainactivity类的onCreate方法中添加: fragment1 = new MyFragment1(); fragment1.setListener(this); 调试发现,Fragment1类中还是没有值。
你有在Activity中实现fragment的接口吗? 在fragment中有将Activity赋值给你的listener吗? 这两个都要有的
_周星星 2016-01-12
  • 打赏
  • 举报
回复
难道不能用Intent传值?
day_moon 2016-01-12
  • 打赏
  • 举报
回复
在Fragment1中添加下面代码: public void setListener(buttonSelectInterface button){ this.mButtonInterface = button; }; mainactivity类的onCreate方法中添加: fragment1 = new MyFragment1(); fragment1.setListener(this); 调试发现,Fragment1类中还是没有值。
柒加伊 2016-01-11
  • 打赏
  • 举报
回复
你继承接口有什么用啊. 你这是对接口不熟悉的问题啊... 给你改一下吧. fragment1里面: public static final int PAGE_SIX=5; public void onClick(View v) { switch (v.getId()) { case R.id.ib_update: //点击到该按钮时 mButtonInterface.onButtonSelect(PAGE_SIX); //调用下面的接口进行传值 break; } } //定义一个接口 private buttonSelectInterface mButtonInterface; public interface ButtonSelectInterface { public void onButtonSelect(int button); } publict void setListener(ButtonSelectInterface interface){ this.mButtonInterface = interface; }; mainActivity里面: class extends Activity implements buttonSelectInterface { onCreate(...) { fragment1 = new Fragment1(); fragment1.setListener(this); } //传递过来的参数 @Override public void onButtonSelect(int button) { switch(button){ case PAGE_SIX: vpager.setCurrentItem(PAGE_SIX); break; } } 这回就好用了...
D3Xmpp 是一个完整的 XMPP 的 Android 的项目服务端使用 openfire 3.9.3客户端使用 Android 4.2.2集成第三方:百度地图sdkasmack.jaruniversal-image-loader-1.9.3.jar功能注册登录会员会员个人资料修改基本聊天语音、图片、表情、动态表情、发送位置聊天(位置需要注册百度api)群聊(openfire需要安装插件)位置共享(实验功能,openfire需要安装插件)项目结构包及其类的作用:1.activites和fragmentsactivites和fragments放的类是一样的,是放activityfragment的。作用是android的Controller层。BaseActivity—— 一切activity的基类,继承了D3Activity。主要是实现注解实例化ChangePwdActivity—— 修改密码页ChatActivity—— 聊天页。Intent必须参数chatName(聊天对象,单聊为对方id,群聊为群名称),可选参数chattype。chatType有单聊和群聊两个参数,不传则默认单聊。ChoseActivity—- 群组邀请页面。Intent必须参数roomName和成员membersCropImageActivity—- 截图页面。isAutoSend为true时自动截图FriendActivity—- 好友详情页。必须参数usernameLoginActivity—- 登陆页。MainActivity—- 主页。使用fragments包住四个TAB页面MapActivity—- 地图页. 从聊天页的位置跳到此页面。必须参数lat,lonMyRoomActivity—- 我的群组页NewFriendActivity—- 我的新好友申请页PicSrcPickerActivity—- 弹出选择选图方式。拍照和图库RegActivity—- 注册页RoomMemActivity—- 群组成员SearchActivity—- 搜索好友页ShowPicActivitiy—- 展示大图页TempActivity—- 模板类,方便我复制生成一个新类而已WebActivity—- 一个全屏的webview//fragmentAdrFragment—- 位置页.原理:登录后的用户,每分钟上传一次自己的位置,如果下线则删除自己的位置。登陆后的用户,每分钟更新一次自己好友的位置,如果对方在线则在百度地图渲染出红点。如果取消共享位置,则关闭以上功能MsgFragment—- “首页”消息原理:登录后的用户,通过XmppMessageInterceptor和XmppMessageListener两个类拦截自己发出和接收到的消息,拦截消息后更新到MsgFragment显示出来。ContactFragment—- 通讯录页原理:登录后的用户,通过XmppPresenceInterceptor和XmppPresenceListener两个类拦截自己发出和接收到的好友状态消息,拦截状态消息后更新到这里。MeFragment—- “我的”页2. com.d3.d3xmpp.adapter主要存放activityfragment对应的list适配。懂android的都知道3.com.d3.d3xmpp.constant存放配置类,有三个:com.d3.d3xmpp.constant. Constants类是常用的配置com.d3.d3xmpp.constant. MyApplication类是全局Application,方便管理androidcom.d3.d3xmpp.constant. ImgConfig是图片类,用于优化图片加载,使用的universal-image-loader-1.9.3.jar4.com.d3.d3xmpp.dao 和 com.d3.d3xmpp.model是属于MVC模式的Model。dao负责获取数据库的数据,并返回给Activitymodel是基础数据类5.com.d3.d3xmpp.d3View 和 com.d3.d3xmpp.util这是私人框架,集成了android开发常用的一些方法及View。包括录音按钮RecordButton,加入了下拉刷新的MyListView,实现了注解实例view的D3Activity等等。6.com.d3.d3xmpp.xmpp(xmpp的核心):其他都是安卓开发者必须懂的东西。下面说xmpp类的作用  XmppConnectionListerner是xmpp的连接状态的listener,比如断线等XmppMessageInterceptor是发出消息的listener,在此拦截并持久化聊天纪录XmppMessageListener是收到消息的listener,在此拦截并持久化聊天纪录XmppPresenceInterceptor是本机发出好友消息的监听,比如添加好友,删除好友XmppPresenceListener是本机收到好友消息的监听,比如添加好友,删除好友XmppConnection是xmpp基本操作的核心类,包括登录,注册,聊天,修改密码,好友管理,群组管理等等。PS:该项目是本人在学习xmpp过程总结的一些东西,代码组织凌乱,旨在帮助新入门xmpp学习xmpp的基本使用 标签:D3Xmpp
1 这是什么?这个库提供了:一个轻量级的Activity代理框架(ActivityAttacher,使用方式基本和Activity一样),目的在于不必在Manifest反复声明Activity同时提供了一个轻量级的Bundle机制(SimpleBundle,使用方式基本和Bundle一样),目的在于在Activity之间传递参数时考虑序列化问题,适用于进程内通信提供了一个轻量级的OnActivityResult机制(OnResultCallback,使用方式基本和OnActivity不一样)状态栏一体化的简单封装ActivityFragment状态保存的问题其他ActivityFragment问题的解决方案,后期一个一个加2 ActivityAttacher的使用        (1) manifestmanifest里只需要声明:主Activity有特殊需求的Activity,如支持旋转模板Activity,暂时只支持一个启动模式对应一个模板Activity模板Activity有几个默认配置项,如果需要更改,也需要声明自己的ActivityManifest的声明:<activity             android:name="com.cowthan.sample.MainActivity"             android:configChanges="orientation|screenSize|keyboardHidden|navigation"             android:screenOrientation="portrait"             android:theme="@style/AppTheme"             >                              MAIN" />                                       activity>         <activity             android:name="org.ayo.app.base.TmplActivityStandard"             android:configChanges="orientation|screenSize|keyboardHidden|navigation"             android:screenOrientation="portrait"             android:launchMode="standard"             android:theme="@style/AyoTransparentTheme" />         <activity             android:name="org.ayo.app.base.TmplActivitySingleTask"             android:configChanges="orientation|screenSize|keyboardHidden|navigation"             android:screenOrientation="portrait"             android:launchMode="singleTask"             android:theme="@style/AyoTransparentTheme" />         <activity             android:name="org.ayo.app.base.TmplActivitySingleTop"             android:configChanges="orientation|screenSize|keyboardHidden|navigation"             android:screenOrientation="portrait"             android:launchMode="singleTop"             android:theme="@style/AyoTransparentTheme" />         <activity             android:name="org.ayo.app.base.TmplActivitySingleInstance"             android:configChanges="orientation|screenSize|keyboardHidden|navigation"             android:screenOrientation="portrait"             android:launchMode="singleInstance"             android:theme="@style/AyoTransparentTheme" />    (2) ActivityAttacherActivityAttacher的意义:ActivityAttacher就是附着在上面4个模板Activity里的Activity代理ActivityAttacher持有一个Activity实例对象,是在onCreate时赋值的ActivityAttacher可以处理Activity的所有配置和生命周期ActivityAttacher提供的接口,原则上应该完全仿Activity,这一点类似v7源码的和AppCompactActivity相关的一个delegate类,但不知道这个类是干什么用的(3) 定义Activity看代码,这两个只有基类不一样,内部代码应该是一样的,其继承AyoActivity的是一个普通Activity,需要去manifest声明, 而继承AyoActivityAttacher,就不需要再去manifest声明了public class SampleActivity extends AyoActivityAttacher{     public static void start(Context c, boolean takeSystemBar, int lanuchMode, OnResultCallBack callBack){         SimpleBundle sb = new SimpleBundle();         sb.putExtra("takeSystemBar", takeSystemBar);         ActivityAttacher.startActivity(c, SampleActivity.class, sb, false, lanuchMode, callBack);     }     @Override     protected void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.ac_tmpl);     } } public class SampleActivity extends AyoActivity{     @Override     protected void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.ac_tmpl);     } }    (4) 启动ActivityAttacher启动方式变成这样:public static void start(Context c, boolean takeSystemBar, int lanuchMode, OnResultCallBack callBack){     SimpleBundle sb = new SimpleBundle();     sb.putExtra("takeSystemBar", takeSystemBar);     ActivityAttacher.startActivity(c, SampleActivity.class, sb, false, lanuchMode, callBack); }SimpleBundle:功能类似于intent或者bundle,存的是传到下一个Activity参数取出参数:boolean takeSystemBar = getIntent().getBooleanExtra("takeSystemBar");这里,在Activity之间传的都是引用,不再需要考虑序列化问题,当然只适用于app单进程内OnResultCallBack是接收Activity的回传结果如何回传:getResultCallback().onResult("代替OnActivityReslt和setResult"); finish();lanuchMode是选择Activity的启动模式,也就是选择模板:ActivityAttacher.LAUNCH_MODE_STANDARDActivityAttacher.LAUNCH_MODE_SINGLE_TASKActivityAttacher.LAUNCH_MODE_SINGLE_TOPActivityAttacher.LAUNCH_MODE_SINGLE_INSTANCE    (5) Activity主题这里提供了两个主题:AyoTransparentTheme和AyoTheme,没啥特殊的

80,472

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧