如何从片段中获取活动的名称?

时间:2015-12-24 05:40:02

标签: android android-fragments android-activity

所以基本上我将在两个不同的活动中使用一个片段。除了一个片段的方法,我想改变一些东西。所以我如何获得使用片段的活动的名称,以便我可以做的事情取决于当前活动的名称。

7 个答案:

答案 0 :(得分:12)

Java尝试:

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

Kotlin尝试:

activity?.javaClass?.simpleName
  • 它是无效的

答案 1 :(得分:1)

首先检查片段是否仍附加到活动,然后您可以检查活动名称:

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

答案 2 :(得分:1)

第一个Ans很棒,但是它在Java中,所以我将其翻译为koltin

activity?.javaClass?.simpleName

答案 3 :(得分:0)

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

public interface ActivityListener
{
  void onClick();
}

将代码写入onClick()方法并从fragment调用此方法。

答案 4 :(得分:0)

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

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

MainActivity.class.getSimpleName()

有关详情,请查看this链接

答案 5 :(得分:0)

我认为更好的解决方案是创建一个区分您的案例的枚举,并通过片段的参数发送该枚举。通过这种方式,您的案例将非常清晰,您将知道为什么片段的流量存在差异。

答案 6 :(得分:0)

如果你在另一个班级,并且你正试图获得"启动课程的名称"那么您可以使用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();
}

我希望它有助于某人...