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

11

基本上我要在两个不同的活动中使用一个片段。除了片段中的一个方法,我想改变一些东西。那么我该如何获取正在使用片段的活动名称,以便根据当前活动的名称进行操作。


1
使用 getAcctivity().getClass()。 - user5156016
@Mohammed Gadiwala:你可以在托管的片段中使用getActivity()方法获取托管Activity的实例。 - kevz
谢谢@JawadLeWywadi,我使用了getclass.getname并且它显示出来了,再次感谢。 - sharin gan
7个回答

22

Java 中尝试:

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

Kotlin中尝试:

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

2
在 Kotlin 中:activity::javaClass.name - Ambran

2
第一个回答很好,但是它是用Java编写的,所以我将其翻译为Kotlin。
activity?.javaClass?.simpleName

1
首先检查片段是否仍附加在活动中,然后您可以检查活动名称:
if(isAdded()) {
        getActivity().getClass().getSimpleName();
    }

0

如果你在另一个类中并且想要获取“初始化类”的名称,那么可以使用上下文来访问它,例如: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();
}

希望它能帮助到有需要的人...


0

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

public interface ActivityListener
{
  void onClick();
}

把你的代码写进 onClick() 方法里,然后从 fragment 调用这个方法。

0

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

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

MainActivity.class.getSimpleName()

更多细节请查看this链接


0
我认为更好的解决方案是创建一个枚举,区分您的情况,并通过片段的参数发送该枚举。这样,您的情况将非常清晰,您将知道为什么片段的流程有所不同。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接