如何将各种ClipboardManager传递给Kotlin中的Fragment?

时间:2018-12-10 03:11:31

标签: android kotlin

我已经阅读了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)
        }
    }

1 个答案:

答案 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
        }
    }