我已经阅读了How to pass and get value from fragment and activity android kotlin的文章
我必须在活动中将var mClipboardManager(请参阅代码A)传递给Fragment。
如何传递var?以及如何在Fragment中获取var?
代码A
private lateinit var mClipboardManager: ClipboardManager
private val aPrimaryClipChangedListener = ClipboardManager.OnPrimaryClipChangedListener {
if (mClipboardManager.hasPrimaryClip() && mClipboardManager.primaryClipDescription.hasMimeType(ClipDescription.MIMETYPE_TEXT_PLAIN) ) {
var pasteData: String = ""
val item = mClipboardManager.primaryClip.getItemAt(0)
pasteData = item.text.toString().trim()
addClipboardRecord(pasteData)
}
}
答案 0 :(得分:1)
您不需要通过,可以在片段中获取,但是可以通过两种方式将mClipboardManager
从活动中传递到片段中
1 。根据您的活动设置价值。
首先,使用getFragmentManager().findFragmentByTag("YourFragmentTag")
在您的片段中,创建一个方法
public void setClipboardManager(ClipboardManager clipboardManager) {
// here you get an instance of clipboardManager, do anything you want
}
并在您的活动中调用此方法:
fragment.setClipboardManager(mClipboardManager)
2 。从片段中获取mClipboardManager
的值
首先,在您的活动中创建一个方法
public ClipboardManager getClipboardManager() {
return mClipboardManager;
}
然后,在
@Override public void onAttach(Context context) {
super.onAttach(context);
if (getActivity() instanceof YourActivity) {
((YourAcitivity) getActivity()).getClipboardManager()
// here you get an instance of clipboardManger, do anything you want
}
}