刷新 PopupWindow.dismiss 上的父片段

2023-12-29

我有一个 popupWindow,它修改 SQLight 表,该表在父窗口中加载微调器。我希望当我关闭 PopupWindow 时,使用新值刷新父窗口中的微调器。下面的代码显示了我创建一个侦听器的进度,该侦听器将检测 PopupWindow 的关闭。到目前为止我拥有的监听器不起作用。我认为我在构建听众时遗漏了一些东西。我已包含 ShowPopup 类以及作为此窗口的父级的片段 (Tab3Fragment)。

showPopup.java

public class showPopup extends PopupWindow{
Context m_context;
Button btnDismiss;
PopupWindow popup;
Tab3Fragment Tab3Fragment;
OnDismissListener listener;

public showPopup(Context context){
    super(context);
    m_context = context;//was commented out

    setContentView(LayoutInflater.from(context).inflate(R.layout.popup_layout, null));
    setHeight(LayoutParams.WRAP_CONTENT);
    setWidth(LayoutParams.WRAP_CONTENT);
}
public void init(View v){
    LayoutInflater inflater = (LayoutInflater)m_context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View popUpView = inflater.inflate(R.layout.popup_layout, null, false);
    final PopupWindow popup = new PopupWindow(popUpView, 600, 400, true);  

    popup.setContentView(popUpView);
    popup.showAtLocation(v, Gravity.CENTER_HORIZONTAL, 0, 0);

    btnDismiss = (Button) popUpView.findViewById(R.id.btndismissxml);
    btnDismiss.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View anchor) {
            popup.dismiss();
        }
    });
}
@Override
public void setOnDismissListener(OnDismissListener listener){
    this.listener = listener;
  }  
}

Tab3Fragment.java

public class Tab3Fragment extends Fragment implements OnClickListener{
Context context;
Button btnPopup, btnSpinnerRefresh;
Spinner spinnerSpecies;
public static int iSpeciesPosition;
showPopup showPopup;
ArrayAdapter<String> arrayAdapterSpecies;
OnDismissListener dismissListener;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup containerGroup, Bundle savedInstanceState) {    
    View v = inflater.inflate(R.layout.tab3_fragment, containerGroup, false);    

    btnPopup = (Button)v.findViewById(R.id.btnPopupxml);
    btnPopup.setOnClickListener(this);

    btnSpinnerRefresh = (Button)v.findViewById(R.id.btnSpinnerRefreshxml);
    btnSpinnerRefresh.setOnClickListener(this);

    spinnerSpecies = (Spinner) v.findViewById(R.id.spinnerSpeciesxml);
    spinnerSpecies.setAdapter(arrayAdapterSpecies);

    if(savedInstanceState != null){
        iSpeciesPosition = savedInstanceState.getInt("speciesPosition_key");
        populateTab3Fragment(v);
    }else if(savedInstanceState == null){
        populateTab3Fragment(v);
    }
    return v;       
}
//@Override
public void onViewCreated(View v) {
    populateTab3Fragment(v);
    /******************************************************************************************************
    Can setOnDismissListener be used outside of showPopup class to indicate that showPopup has dismissed? 
    ******************************************************************************************************/
    showPopup popup = new showPopup(context);
    popup.setOnDismissListener(new OnDismissListener(){

        @Override
        public void onDismiss(){
            Toast.makeText(getActivity().getApplicationContext(), "onDismiss() works.", Toast.LENGTH_LONG).show();
            loadSpinnerData();
        }  
    });         
}
@Override
public void onClick(View v) {
    switch (v.getId()) {
    case R.id.btnPopupxml:
        new showPopup(getActivity().getApplicationContext()).init(v);
        break;
    case R.id.btnSpinnerRefreshxml:
        loadSpinnerData();//temporary workaround to refresh spinner...
        break;
    }
}
/**
 * Function to load the spinner data from SQLite database
 * */
public void loadSpinnerData() {
    //omitted
}
public void populateTab3Fragment(View v){   
    loadSpinnerData();              
   }
}

从来没有达到过可以直接在子 PopupWindow 关闭时刷新父窗口的地步。最终的解决方案(解决方法)是仅当设置了指示修改的 SQL 微调器查找表的静态标志 (iSpeciesRefresh) 时,才在微调器的 onTouch 事件之后使用fragmentmanager Replace()。

public class dataCapture extends Fragment implements OnClickListener {
String szSpecies;
static public int iSpeciesRefresh = 1;
Spinner spinnerSpecies;
...
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View v = inflater.inflate(R.layout.data_capture, container, false);
...
    spinnerSpecies = (Spinner) v.findViewById(R.id.spinnerSpeciesxml);

    spinnerSpecies.setOnTouchListener(new View.OnTouchListener() {//refreshes fragment as needed...
        @Override
        public boolean onTouch(View view, MotionEvent motionEvent) {
            if (iSpeciesRefresh == 1) {//this is application default
                //do nothing
            } else if (iSpeciesRefresh == 0) {//value is reset to "0" at SAVE, UPDATE, or DELETE in speciesPopupWindow.
                refreshDataCapture();
                iSpeciesRefresh = 1;
            }
            return false;
        }
    });
...
}    
public void refreshDataCapture() {
    Fragment currentFragment = (dataCapture) getFragmentManager().findFragmentByTag("data_capture");
    if (currentFragment == null) {
        currentFragment = new dataCapture();
    } else if (currentFragment != null) {
        getFragmentManager().popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
        getFragmentManager().beginTransaction().replace(R.id.fragment_placeholder, new dataCapture(), "data_capture").addToBackStack(null).commit();       
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

刷新 PopupWindow.dismiss 上的父片段 的相关文章

  • ActionBar 下拉微调器项目默认为第一项

    我试图设置默认情况下需要在微调器中选择的项目的索引 但它始终默认为 0 第一项 actionBar setDisplayShowTitleEnabled false actionBar setNavigationMode ActionBar
  • 为什么 Android 服务在测试时不是单例的?

    当运行大量测试套件时 我注意到我的一个 Android 服务不再是单例的 Android 服务应该是单例的 但是当使用 ServiceTestCase 时 我的引用计数超过 1 在 onCreate 中递增 在 onDestroy 中递减
  • 围绕二维坐标系中的特定点缩放

    Below is an image my coordinate system 我想做的是 我想开始围绕画布中的特定点进行缩放 缩放工作正常 但我的问题是我不知道如何计算缩放时移动画布的量 请注意 我我没有使用canvas scale 我只是
  • 视图绑定对应用程序大小的影响有多大?

    View Binding 按照文档的规定 为每个XML元素生成一个Binding类 以方便访问和检查 并减轻如下的时间负担 findViewById 虽然findViewById通过更昂贵的关联搜索进行操作 由于映射 绑定应该 直接 访问
  • 整个应用程序中的全局“搜索功能”

    在我的整个应用程序中 我希望搜索按钮执行单独的操作Activity 即 当我按下搜索按钮时 从应用程序中的任何位置调用一个单独的活动 有什么方法可以代替定义onSearchRequested 在每项活动中 我只是在一个地方配置它 例如Man
  • 为什么动态 qml 对象的创建如此缓慢,有哪些合理的替代方案?

    我想要实现的目标类似于棋盘游戏 有一个100 100的网格 放在一个Item它驻留在一个Flickable 游戏板 的各个矩形都是 svg 图像 目前大约有 20 种 可能会增加到数百种 作为基准测试 我只是尝试用元素填充 世界 Compo
  • Camera2设置预览(View)并获取预览回调

    我想从 Camera2 获取预览以及用于处理帧的 byte 回调 mImageReader ImageReader newInstance largest getWidth largest getHeight ImageFormat RAW
  • AdMob 插页式广告仅显示一次

    当广告在一个会话内第二次或第三次打开时 LogCat 会显示错误消息 尝试使用不同的广告管理器启动新的 AdActivity 我通过应用程序主屏幕的 on resume 方法中的意图启动插页式广告 Override public void
  • 防止 FragmentPagerAdapter 中的 WebView 重新加载?

    我有一个 FragmentPagerAdapter 用于显示大约 6 个选项卡 所有选项卡都从 Web 服务器加载数据 其中一个选项卡包含一个从我的服务器加载图像的 WebView 生成图像的服务器端成本很高 因此我想减少重新加载 WebV
  • Android Realm.io:行/对象不再有效

    这是我的删除功能 它确实找到了workday1 object public static void delete Context context Workday workday Realm realm getRealm context re
  • Android系统每个应用程序的通知限制

    这可能偏离主题 但我找不到任何相关内容 Android应用程序可以显示的通知数量有限制吗 我在收到 100 条通知后遇到问题 没有文件明确说明这一点 注意 显示 100 条通知并不是一个好主意 但由于某些原因这是必需的 In API23 包
  • 检查应用程序是否首次运行[重复]

    这个问题在这里已经有答案了 我是 Android 开发新手 我想根据应用程序安装后首次运行来设置一些应用程序的属性 有什么方法可以发现应用程序是第一次运行 然后设置其首次运行属性吗 下面是一个使用的例子SharedPreferences实现
  • 开始使用 Honeycomb 进行 Android 开发 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 点击当前选项卡刷新页面时的 Xamarin.Forms TabbedPage 事件

    我正在使用 Xamarin Forms 构建 iOS Android 应用程序 并有一个 TabbedPage 如果用户已经在选项卡 2 上 并且单击了选项卡 2 并且我希望刷新选项卡 2 或者运行我自己的函数 以便我可以自己刷新它 有没有
  • 带动画的 ScrollTo(0,250) Android ScrollView

    当我滚动到 0 250 时 我想在滚动动作中包含一个动画 我做了这段代码 但它没有根据动画滚动 scrollMe 是滚动小部件 id ObjectAnimator anim ObjectAnimator ofInt scrollMe tra
  • 如何使用百分比进行android布局?

    我们如何使用百分比android视图元素的值 像这样的东西
  • 在 Android Studio 4.0(Canary) 中找不到预览窗口在哪里

    我正在浏览有关在 Android Studio 4 0 Canary 中运行的 Jetpack 的教程 请参阅下面的链接文章 https developer android com jetpack compose tutorial http
  • QML MouseArea 将事件传播到按钮

    我正在开发一个应用程序 其菜单类似于 Android 版 Gmail 收件箱应用程序菜单 基本上 当您按下按钮打开菜单时 它就会滑入视图 用户可以将其滑开或按菜单上的按钮 对于滑动我使用了代码SwipeArea from kovrov ht
  • Google Place Api:来自此 Android 客户端应用程序 com.package.name 的请求被阻止

    我在用PlaceAutocompleteFragment当我单击搜索字段 PlaceAutocompleteFragment 对话框消失时 我收到此错误 errors domain global re ason forbidden mess
  • 快速查询最新记录的方法?

    我有一张这样的表 USER PLAN START DATE END DATE 1 A 20110101 NULL 1 B 20100101 20101231 2 A 20100101 20100505 在某种程度上 如果END DATE i

随机推荐

  • Azure Pipelines 多存储库如何获取 Git 提交 ID

    对于具有多个存储库的 Azure Pipeline 如何从签出的资源存储库中获取 GIT 提交 ID 支持吗 我使用 Azure 存储库来存储管道 yaml 文件 并检查代理上的构建源以在那里进行构建 我们使用的是 Delphi 所以我们必
  • 在过滤器管道上使用多个字段 |角4

    我想知道如何使用 Pipe 使用多个输入字段来过滤 json 对象 这是我到目前为止只有一个字段按名称过滤的代码 TS members name Carl country Brazil name John country United St
  • 使用 Jquery 进行多个过滤器

    我的页面中有一些 div 使用 php jquery 构建 我想根据它们的属性过滤它们 如果有超过 1 个属性过滤 则会缩小搜索范围 div 看起来像这样 div div title Mike Whatever content 1 div
  • 将 WWW 重定向到非 WWW,或者反之亦然? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我刚刚在我的网站上进行了搜索引擎优化
  • 使用 Google Sheets API,当我输入数据时,不支持添加和更新列格式

    所以 这实际上是一个基于我上次尝试的后续问题 如何使用 API 将列添加到 Google Sheets 并在同一调用中提供列的名称和类型 https stackoverflow com questions 57259399 how to a
  • 高效的java对象图序列化

    序列化 java 对象图的最佳方法是什么 我对序列化库的要求是 1 反序列化速度 2 size 尽可能小 小于java默认序列化中的大小 3 灵活性 基于注释的定义必须序列化的内容会很好 底层文件格式并不重要 我查看了Protocol Bu
  • 具有统一初始化的 Auto 扩展为意外类型

    考虑这个用 GCC 4 7 2 编译的短程序g std c 11 test cc include
  • 使用 Susnpot Gem 进行 Solr 搜索

    我目前正在使用 sunspot gem 在我的 Rails 应用程序中实现全文搜索 通过 Sunspot Solr 在我的网站上进行的查询正在运行并返回正确的结果 但是 当我尝试使用 Solr 管理页面进行查询时 我很难显示结果 使用查询字
  • 开发截图 Chrome 扩展

    我在这里看到了很多答案 但没有一个是我要找的 我想从 chrome 扩展程序中截取我第一次看到的屏幕的屏幕截图 而无需滚动页面 并 提醒 创建的文件base64路径 我拥有所有正确的权限 permissions activeTab tabs
  • 在编译输出中包含外部类型定义

    我正在用 TypeScript 编写一个库 cjol core 它具有 JavaScript 依赖性dep 其中没有 types包可用 相反 我写了一个自定义dep d ts文件 这使得我在开发库时所有的类型都能很好地工作 一切编译都很好b
  • 使用本地 npm 注册表在 Hyperledger Composer 中实例化 Chaincode

    我想在没有任何互联网连接的环境中实例化链代码 由于链码容器将发出npm install实例化后 我添加了一个名为的新容器npmregistry in the docker composer yml因此它与 Fabric 容器的其余部分一起配
  • 在 Windows 上安装 TkinterTreectrl

    我尝试在Windows7上安装TkTreectrl但没有成功 我下载了2 0 1版本的包解压并尝试运行setup py 那个人总是首先抱怨文件夹 TkTreectrl 不存在 这是错误的 因为该文件夹随下载一起提供 并且我在 TkTreec
  • recyclerView 拖放后在 Room 中保存新位置

    我在我的应用程序中实现了带有拖放功能的 recyclerView 一切工作正常 直到应用程序重新启动 应用程序不会保存 记住任何拖放更改 我试过了 使用 SharedPreference GSON 阅读其他 SQLite 答案 如下所示 拖
  • 如何在javascript或jquery中获取没有页面的当前url

    如何在没有 Javascript 或 jQuery 页面的情况下获取当前 URL 例如 如果网址是 http www abc com music pop aspx http www abc com music pop aspx 我想获得没有
  • 如何存储大字典?

    我有一本大字典 28 MB MyDict 存储在MyDict py file 如果我执行语句 from MyDict import MyDict A MemoryError抛出异常 我如何使用访问这本词典cPickle or shelve模
  • 命名参数可以与 Python 枚举一起使用吗?

    Example class Planet Enum MERCURY mass 3 303e 23 radius 2 4397e6 def init self mass radius self mass mass in kilograms s
  • ruby:关键字“in”的含义是什么

    当我第一次在 ruby 中找到关键字 in 时 我想也许我可以这样做 1 英寸 0 10 但看起来我不能这样使用它 然后我在 ruby lang org 中搜索它 并用 google 进行搜索 没有答案 ruby 中关键字 in 的含义是什
  • oracle中的序列创建

    我想在oracle中创建一个序列 其中列字段 Empid 的最大值必须是序列的最小值 下面是我在同一个 stackexchange 中找到的 create sequence mytemp seq start with v Startval
  • KILL 信号会立即退出进程吗?

    我正在开发一个使用的服务器代码fork 并执行创建子进程 孩子的PID在以下情况下被注册fork 成功并清理时CHILD信号已被捕获 如果服务器需要停止 所有程序都会被终止 最终会发出 KILL 信号 现在 这是通过迭代所有注册的 PID
  • 刷新 PopupWindow.dismiss 上的父片段

    我有一个 popupWindow 它修改 SQLight 表 该表在父窗口中加载微调器 我希望当我关闭 PopupWindow 时 使用新值刷新父窗口中的微调器 下面的代码显示了我创建一个侦听器的进度 该侦听器将检测 PopupWindow