当前位置: 首页 > 知识库问答 >
问题:

从对话框片段到片段获取日期

爱琪
2023-03-14

似乎有很多与这个主题相关的问题。当我阅读大部分时,我有一个问题。通常人们试图制作一个片段,然后从那里生成一个对话片段。所以对话片段在片段中。

在我的例子中,我创建了一个按钮,用于打开工具栏上的dialogfragment。然后我从导航栏打开我的主要片段。因此dialogfragment和我的主片段通过相同的主活动被调用,只是在不同的地方。我无法从片段内部调用对话框片段,因为它在选择菜单选项时被调用。

当我尝试新建片段时,我尝试创建一个接口和一个监听器。setTargetFragment(somethinghere,1);我不知道我应该在somethinghere球场上表演什么。getactivity、mealsworkoutfragment和。这是错误的)

我还试图让我的片段扩展Dialogfragment,但每次我按下按钮,都会产生我的片段,这似乎是一种可怕的方式。

@Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.date_picker) {

            DialogFragment newFragment = new DatePickerFragment();

            newFragment.show(getSupportFragmentManager(), "datePicker");

            return true;
        }

        return super.onOptionsItemSelected(item);
    }

@Override
    public boolean onNavigationItemSelected(MenuItem item) {
        // Handle navigation view item clicks here.
        int id = item.getItemId();

        if (id == R.id.mealworkoutTab) {
            iconShow = true;
            invalidateOptionsMenu();
            FragmentTransaction mealsworkoutsFrag = getSupportFragmentManager().beginTransaction();
            mealsworkoutsFrag.replace(R.id.flMain,new MealsWorkoutsFragment());
            mealsworkoutsFrag.commit();
        } else if (id == R.id.userinfoTab) {
            iconShow = false;
            invalidateOptionsMenu();
            FragmentTransaction userInfoFrag = getSupportFragmentManager().beginTransaction();
            userInfoFrag.replace(R.id.flMain,new UserInfoFragment());
            userInfoFrag.commit();

        } else if (id == R.id.logoutTab) {
            auth.signOut();
        }

        DrawerLayout drawer = findViewById(R.id.drawer_layout);
        drawer.closeDrawer(GravityCompat.START);
        return true;
    }

我猜一定存在一个简单的解决方案,因为这看起来有点琐碎(从dialogfragment获取某个片段)

共有1个答案

云宏儒
2023-03-14

一个建议是在这种情况下使用像EventBus这样的库来传达和收听“事件”并传递数据。因此,在您的情况下,当用户选择日期时,会发布一个带有所选日期有效负载的“事件”。然后将此事件捕获在您的片段中(因为您让您的片段订阅此特定事件),然后您可以随心所欲地处理有效负载(所选日期)。

如果上面的内容听起来很难理解或描绘,请访问上面的链接。它有示例代码。这个库实现起来非常简单,在这种情况下非常有帮助。

 类似资料:
  • 我读了DialogFragment,然后把它做成这样的一对一。 在另一个SherlockFragment中,我接下来制作: 但是doPositiveClick()、doNegativeClick()方法希望是静态的,这对我来说不好。

  • 如您所见,当按下按钮时,main activity运行“GetFromuser”函数。我想在该函数中获取edittext值。我该怎么做呢?

  • 我遇到了一个如何在对话框片段中更新片段的问题。 当我单击过滤器菜单按钮时,会显示一个新的对话框片段,其中包括一个无线电组。 我想在单击ok按钮时更新包含位置列表的片段。 它是PlaceActive的代码,其中包含PlaceFraank: 公共类PlaceActive扩展AppCompatActive{ } 以下是PlaceFragment类的代码: 公共类PlaceFragment扩展了片段{ }

  • 我有一个片段和一个对话框片段,我想在它们之间进行通信:将数据从片段发送到对话框片段,并将数据从对话框片段发送到片段 我阅读了有关和的信息,但我不明白如何正确使用它们向/从发送/接收数据。 任何帮助?

  • 我正在尝试通过将数据与接口传递给片段来将数据从对话片段获取到片段。到目前为止,我知道首先是因为它的片段,我需要在MainActive上实现接口,并从那里将数据发送到我想要的任何片段。我明白,但我不知道如何做到这一点。到目前为止,我已经在MainActive中实现了接口,我正在获取数据,但我不知道如何将其发送到片段。 主要活动 对话片段-此对话片段从画廊/相机获取图片 片段-此片段应从dialogf

  • 是否可以将新的导航架构组件与DialogFragment一起使用?我必须创建自定义导航器吗? 我很乐意将它们与导航图中的新功能结合使用。