所以基本上我将在两个不同的活动中使用一个片段。除了一个片段的方法,我想改变一些东西。所以我如何获得使用片段的活动的名称,以便我可以做的事情取决于当前活动的名称。
答案 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();
}
我希望它有助于某人...