[英]How to pass a java class name as parameter and use it as casting in method
我正在嘗試實現每個活動都可以調用它的通用對話框方法。 公共靜態方法應該是這樣的。 但是我在將 mContent 轉換為其活動類名稱時遇到問題。
public static void openDialogEntry(Class activityClassName, Context mContext, String title, ... ) {
Dialog_Entries dialog = new Dialog_Entries( title, ... );
dialog.show( ((activityClassName) mContext).getSupportFragmentManager(), tag);
}
我想從任何活動的片段調用這個方法,例如從 SecondActivity.java 的片段(視圖)使用
openDialogEntry(view.getContext().getClass, view.getContext(), title, ... ) ;
我期望做的是在 openDialogEntry 方法中做類似下一行的事情
dialog.show( ((SecondActivity) mContext).getSupportFragmentManager(), tag);
似乎((activityClassName) mContext)
不起作用。 我也想從 MainActivity.java 和 ThirdActivity.java 調用公共靜態方法(以及它們需要轉換的片段)。
如何實現這個目標?
類有一個方法Class.cast(Object)
你可以這樣做:
public static void openDialogEntry(Class<? extends Context> activityClassName, Context mContext, String title, ...) {
Dialog_Entries dialog = new Dialog_Entries(title, ...);
dialog.show(activityClassName.cast(mContext).getSupportFragmentManager(), tag);
}
請注意, cast
僅在提供有關Class
參數的通用信息時才有意義
但是正如@Zabuzard 已經提到的那樣。 這沒有多大意義。 如果您可以將mContext
為activityClassName
為什么不使用此類而不是Context
作為方法參數?
Context
可能實現一些interface
或擴展一些class
,提供了getSupportFragmentManager
方法。 所以根本不需要投射。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.