首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >从android的Main activity中调用Fragment函数,但无法正常工作

从android的Main activity中调用Fragment函数,但无法正常工作
EN

Stack Overflow用户
提问于 2018-04-19 16:43:31
回答 1查看 56关注 0票数 0

实际上,我想从Main activity调用特定ClickListner上的片段函数,而不是working。下面是我的xml代码片段:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.SwipeRefreshLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/swipelayoutm"
    >
    <LinearLayout
        android:layout_width="match_parent"
        android:orientation="vertical"
        android:layout_height="match_parent">
        <android.support.v7.widget.RecyclerView
            android:id="@+id/mThirdRecyclerview"
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            class="android.support.v7.widget.RecyclerView"/>
    </LinearLayout>
</android.support.v4.widget.SwipeRefreshLayout>

下面是我在ClickListner上的主要活动java代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ThirdFragment fragment = (ThirdFragment) getFragmentManager().findFragmentById(R.id.swipelayoutm);
                                fragment.SearchCategoresFunction(text);

下面是我的片段函数:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 public void SearchCategoresFunction(final String searchTxt){
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                dataStoredArrayList.clear();
                myRecyclerAdapter.notifyDataSetChanged();
              SecondParseDataClass  mparser = new SecondParseDataClass(getContext());
                mparser.setOnDataRetrievalCallback(new OnDataRetrievalCallback() {
                    @Override
                    public void onDataRetrieval(ArrayList<DataStored> dataSet) {
                        dataStoredArrayList.addAll(dataSet);
                        myRecyclerAdapter.notifyDataSetChanged();
                    }
                });
                mparser.execute("http://192.168.3.10/datafetchwithsubcatego.php", "3",searchTxt);

            }
        }, 0);
    }

下面是我的主要活动xml代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    tools:openDrawer="start">

    <include
        layout="@layout/app_bar_main"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
    <android.support.design.widget.NavigationView
        android:id="@+id/nav_view"
        android:layout_height="match_parent"
        android:layout_width="wrap_content"
        android:layout_gravity="start"
        android:fitsSystemWindows="true"
        app:headerLayout="@layout/nav_header_main"
        app:menu="@menu/activity_main_drawer"
        >
        <ExpandableListView
            android:id="@+id/lvExp"
            android:layout_marginTop="390dp"
            android:layout_height="match_parent"
            android:layout_marginBottom="5dp"
            android:divider="@color/colorPrimary"
            android:layout_width="match_parent"/>

    </android.support.design.widget.NavigationView>
    <android.support.design.widget.NavigationView
        android:id="@+id/nav_view1"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="end"
        android:fitsSystemWindows="true"
        app:itemTextColor="@color/black">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
        <include layout="@layout/practicefilterdesign" />
    </LinearLayout>
    </android.support.design.widget.NavigationView>
    <!--app:menu="@menu/activity_main_drawer"-->
</android.support.v4.widget.DrawerLayout>

请指导我如何删除此错误.............

EN

回答 1

Stack Overflow用户

发布于 2018-04-19 18:09:21

对于这一点,我可以推荐EventBus click here

只需创建一个为您保存数据的类,

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public static class ClickEvent { /* Additional fields if needed */ }

在你的片段中添加

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
private onClickFromActivity(){ 
//write click operation here
}

@Subscribe(threadMode = ThreadMode.MAIN)  
public void onMessageEvent(ClickEvent event) {
   onClickFromActivity()
};

@Override
public void onStart() {
    super.onStart();
    EventBus.getDefault().register(this);
}

@Override
public void onStop() {
    super.onStop();
    EventBus.getDefault().unregister(this);
}

当你想要触发fragment方法时,在你的活动代码中写下这段代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
EventBus.getDefault().post(new ClickEvent());

这是android中最好的交互方式

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49926198

复制
相关文章
android从activity跳转到fragment解决
上一篇解决了【Android解决Fragment跳转到Fragment页面问题,相同或不同宿主Activity解决方法】
全栈程序员站长
2022/08/25
1.5K0
Android的Fragment中的互相通信-桥梁activity
Android的Fragment中的互相通信-桥梁activity 效果图如下: image 项目结构图如下: image Fragment1: package com.demo.fragmentto
Dream城堡
2019/03/04
4480
android acitivity 跳转到fragment,android Activity跳转到指定的Fragment
Intent show=new Intent(GrXxActivity.this,MyActivityFragment.class);
全栈程序员站长
2022/08/31
5310
Android:Fragment + Activity 二合一
今天把这项工作完成了,做成了单独的SwipeBackFragment库以及Fragmentation-SwipeBack拓展库
用户9227784
2021/12/17
6940
fragment与Activity
      fragment到底是什么东西呢?英文为碎片,片段,通俗讲就是Activity界面的一个片段,组成部分。一个Activity界面可以有多个fragment 。fragment只能依赖于Activity而存在,像寄生虫一样。
fanfan
2022/05/06
3790
fragment与Activity
Apache编译后无法正常工作
因为某个场景的需求,要在一个国产系统Rocky4.2(国产凝思4.2操作系统)上安装Apache,虽说此系统是基于Redhat 5.8开发的,但是发现yum安装源包管理,RPM命令倒是能用,但是底层依赖完全没有,这就尴尬了,so,只能源码编译安装了。
后场技术
2020/09/03
2.8K0
Activity跳转fragment
fragment不能单独存在,必须依附在Activity上,所以在Activity跳转时,实际是跳到fragment的宿主上
全栈程序员站长
2022/08/31
3290
android onresume函数,android – 在Activity中重新创建后未调用onResume
在应用程序设置中进行某些更改时,我在recreate的onActivityResult中调用MainActivity。重新创建后,不调用onResume。
全栈程序员站长
2022/09/05
3.4K0
android-fragment-重新显示调用的方法
@Override public void onHiddenChanged(boolean hidden) { super.onHiddenChanged(hidden); if (!hidden) { getUserInfo(UserManager.getManager(getContext()).getUserId()); } }
tea9
2022/07/16
4010
Fragment回调Activity
如果你需要在fragment中处理一些事情,事情的处理结果或者你需要告 诉activity马上要做什么事,这时候就需要和activity进行通讯。包括很多fragment在viewpager中的情况,而且可以保证activity能即时进行响应。相比发送广播,性能更好,代码更少。
坑吭吭
2018/08/31
1.8K0
Fragment中调用startActivityForResult的那些坑
这种情况会直接调用到Fragment的startActivityForResult方法
AntDream
2019/07/15
2.1K0
VC 在调用main函数之前的操作
title: VC 在调用main函数之前的操作 tags: [VC++, 反汇编, C++实现原理] date: 2018-09-16 10:36:23 categories: VC++反汇编分析 keywords: VC++, 反汇编, C++实现原理, main函数调用, VC 运行环境初始化 --- 在C/C++语言中规定,程序是从main函数开始,也就是C/C++语言中以main函数作为程序的入口,但是操作系统是如何加载这个main函数的呢,程序真正的入口是否是main函数呢?本文主要围绕这个主题,通过逆向的方式来探讨这个问题。本文的所有环境都是在xp上的,IDE主要使用IDA 与 VC++ 6.0。为何不选更高版本的编译器,为何不在Windows 7或者更高版本的Windows上实验呢?我觉得主要是VC6更能体现程序的原始行为,想一些更高版本的VS 它可能会做一些优化与检查,从而造成反汇编生成的代码过于复杂不利于学习,当逆向的功力更深之后肯定得去分析新版本VS 生成的代码,至于现在,我的水平不够只能看看VC6 生成的代码 首先通过VC 6编写这么一个简单的程序
Masimaro
2018/10/10
2.2K0
VC 在调用main函数之前的操作
关于从activity跳转到fragment里面的问题
我的需求是这样的,我app进去主界面就是一个fragment   由startactivity来管理,在程序标题栏有个搜索控件
wust小吴
2019/07/08
1.9K0
activity嵌套fragment,fragment内嵌fragment之间传值切换fragment
至于fragment的用法,fragment+viewpager的滑动切换代码请参考博文
fanfan
2022/05/07
1.1K0
activity嵌套fragment,fragment内嵌fragment之间传值切换fragment
点击加载更多

相似问题

从Android的main activity调用函数

21

从activity Android调用fragment方法

218

如何从android的activity中调用fragment

23

如何从android的activity中调用fragment?

52

Android中的fragment_main和activity_main布局

32
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文