【问题标题】:Android Navigation Drawer unable to setText in a Fragment from MainActivityAndroid Navigation Drawer 无法在 MainActivity 的 Fragment 中设置文本
【发布时间】:2014-06-20 06:44:03
【问题描述】:

我正在尝试将 GPS 坐标放在 MainActivity 中 Fragment 的 TextView 上,但我不知道该怎么做。

我有:

MainActivity.java
LocationFragment.java

我想通过 MainActivity 的 onLocationChanged() 方法更新 LocationFragment 中的 TextView。

有没有机会这样做:

public void onLocationChanged(Location location) {

    lat = (double) (location.getLatitude());
    lng = (double) (location.getLongitude());

    fragment.updateText(lat +" "+lng);

}

【问题讨论】:

  • 您可以将 Activity 中的值传递给 Fragment 并在那里显示。
  • 您可以做您想做的事,但当然您需要将当前片段保存在变量中,或者在收到新位置时“即时”获取当前片段。如果您有多个片段,请使用“instanceOf”检查片段的类型,以确保仅为正确的片段运行该方法。
  • 这是一个 NavigationDrawer GUI,我有多个片段,我不知道如何选择正确的片段并更改它的 textView

标签: android android-activity android-fragments fragment drawer


【解决方案1】:

您可以为此使用接口,因此片段可重用性的主要目标得以保持。您可以通过以下方式实现 Activity-Fragment 或 Fragment-Fragment 之间的通信:

【讨论】:

    【解决方案2】:

    非常简单,只需在片段中创建一个方法,如下所示,

    public void SetTitle() {
            text_title.setText("hello fragment");
        }
    

    现在从 Activity 调用该方法,下面为

    HomeFragment fragment = (HomeFragment) getSupportFragmentManager()
                            .findFragmentByTag("HomeFragment");
                    fragment.SetTitle();
    

    对于 > 11 API 只需更改 getFragmentManager()

    现在你可以为所欲为。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-22
      相关资源
      最近更新 更多