【问题标题】:How to get the name of the activity from the fragment?如何从片段中获取活动的名称?
【发布时间】:2015-12-24 05:40:02
【问题描述】:

所以基本上我将在两个不同的活动中使用一个 Fragment。除了我想要更改某些内容的 Fragment 的一种方法。那么我如何获得使用 Fragment 的活动的名称以便我可以做事取决于当前活动的名称。

【问题讨论】:

  • 使用getAcctivity().getClass()
  • @Mohammed Gadiwala:您可以在托管片段中使用 getActivity() mth 获取托管 Activity 实例。
  • 感谢@JawadLeWywadi,我使用了getclass.getname,它出现了,再次感谢

标签: android android-fragments android-activity


【解决方案1】:

Java尝试:

getActivity().getClass().getSimpleName() 
  • 但在使用片段中的getActivity() 方法时要小心。如果您的片段未附加到活动 getActivity() 将返回 null。

Kotlin尝试:

activity?.javaClass?.simpleName
  • 它是空安全的

【讨论】:

  • 在 Kotlin 中:activity::javaClass.name
【解决方案2】:

第一个 Ans 很棒,但它是用 java 编写的,所以我用 koltin 翻译它

activity?.javaClass?.simpleName

【讨论】:

    【解决方案3】:

    首先检查fragment是否仍然附加到activity,然后你可以检查activity名称:

    if(isAdded()) {
            getActivity().getClass().getSimpleName();
        }
    

    【讨论】:

      【解决方案4】:

      创建您自己的接口并在您的两个活动中实现它,最后将此实例传递给您的片段。

      public interface ActivityListener
      {
        void onClick();
      }
      

      将您的代码写入 onClick() 方法并从片段中调用此方法。

      【讨论】:

        【解决方案5】:

        使用this.getClass().getSimpleName() 获取活动的名称。

        如果您在 OnClickListener(或其他内部类)的上下文中,请手动指定该类:

        MainActivity.class.getSimpleName()
        

        更多详情请查看this链接

        【讨论】:

          【解决方案6】:

          我认为更好的解决方案是创建一个枚举来区分您的案例并通过片段的参数发送该枚举。这样你的案例就会很清楚,你就会知道为什么你的片段的流程会有所不同。

          【讨论】:

            【解决方案7】:

            如果你在另一个类中,并且你正在尝试获取“启动类”的名称,那么你可以使用 Context 来访问它,如下所示:getContext().getClass().getSimpleName();

            例子:

            public String getMyActivityName() {
                String myActivityName;
                myActivityName = getContext().getClass().getSimpleName();
                return myActivityName;
            }
            
            
            @Override
            protected void onAttachedToWindow() {
                super.onAttachedToWindow();
            
                Toast.makeText(this.getContext(), "myActiveParentClass: "+getMyActivityName(), Toast.LENGTH_SHORT).show();
            }
            

            我希望它可以帮助某人......

            【讨论】:

              猜你喜欢
              • 2020-06-08
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2017-04-01
              相关资源
              最近更新 更多