From 920ca8d41edb98a3959dfcfe6e27bc5eb86f1ebe Mon Sep 17 00:00:00 2001 From: "pengfei.zhou" Date: Sat, 23 Nov 2019 15:11:11 +0800 Subject: [PATCH] feat:DoricPanelFragment use DoricJSLoader to load js bundle --- .../main/java/pub/doric/DoricFragment.java | 13 +++-- .../java/pub/doric/DoricPanelFragment.java | 49 ++++++++++++++++++- .../main/java/pub/doric/DoricRegistry.java | 2 +- .../src/main/res/layout/doric_fragment.xml | 1 + .../main/res/layout/doric_framgent_panel.xml | 4 ++ 5 files changed, 61 insertions(+), 8 deletions(-) create mode 100644 Android/doric/src/main/res/layout/doric_framgent_panel.xml diff --git a/Android/doric/src/main/java/pub/doric/DoricFragment.java b/Android/doric/src/main/java/pub/doric/DoricFragment.java index 806c6800..8a7f78ae 100644 --- a/Android/doric/src/main/java/pub/doric/DoricFragment.java +++ b/Android/doric/src/main/java/pub/doric/DoricFragment.java @@ -33,15 +33,18 @@ import androidx.fragment.app.Fragment; public class DoricFragment extends Fragment { private FrameLayout root; - @Override - public void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - } - @Nullable @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { root = (FrameLayout) inflater.inflate(R.layout.doric_fragment, container, false); return root; } + + @Override + public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + requireFragmentManager().beginTransaction() + .add(R.id.root, DoricPanelFragment.newInstance("assets://demo/Counter.js", "Counter.js")) + .commit(); + } } diff --git a/Android/doric/src/main/java/pub/doric/DoricPanelFragment.java b/Android/doric/src/main/java/pub/doric/DoricPanelFragment.java index 2acd181e..cdc90762 100644 --- a/Android/doric/src/main/java/pub/doric/DoricPanelFragment.java +++ b/Android/doric/src/main/java/pub/doric/DoricPanelFragment.java @@ -16,6 +16,7 @@ package pub.doric; import android.os.Bundle; +import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -24,15 +25,59 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.fragment.app.Fragment; +import pub.doric.async.AsyncResult; +import pub.doric.loader.DoricJSLoaderManager; +import pub.doric.utils.DoricLog; + /** * @Description: pub.doric * @Author: pengfei.zhou * @CreateDate: 2019-11-23 */ public class DoricPanelFragment extends Fragment { - @Nullable + private DoricPanel doricPanel; + + public static DoricPanelFragment newInstance(String scheme, String alias) { + Bundle args = new Bundle(); + args.putString("scheme", scheme); + args.putString("alias", alias); + DoricPanelFragment fragment = new DoricPanelFragment(); + fragment.setArguments(args); + return fragment; + } + @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { - return super.onCreateView(inflater, container, savedInstanceState); + doricPanel = (DoricPanel) inflater.inflate(R.layout.doric_framgent_panel, container, false); + return doricPanel; + } + + + @Override + public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + Bundle argument = getArguments(); + if (argument == null) { + DoricLog.e("DoricPanelFragment argument is null"); + return; + } + final String alias = argument.getString("alias"); + String scheme = argument.getString("scheme"); + DoricJSLoaderManager.getInstance().loadJSBundle(scheme).setCallback(new AsyncResult.Callback() { + @Override + public void onResult(String result) { + doricPanel.config(result, alias); + } + + @Override + public void onError(Throwable t) { + DoricLog.e("DoricPanelFragment load JS error:" + t.getLocalizedMessage()); + } + + @Override + public void onFinish() { + + } + }); } } diff --git a/Android/doric/src/main/java/pub/doric/DoricRegistry.java b/Android/doric/src/main/java/pub/doric/DoricRegistry.java index 3eb87e6c..2059d18b 100644 --- a/Android/doric/src/main/java/pub/doric/DoricRegistry.java +++ b/Android/doric/src/main/java/pub/doric/DoricRegistry.java @@ -48,7 +48,7 @@ import java.util.Set; import java.util.concurrent.ConcurrentHashMap; /** - * @Description: com.github.penfeizhou.doric + * @Description: pub.doric * @Author: pengfei.zhou * @CreateDate: 2019-07-20 */ diff --git a/Android/doric/src/main/res/layout/doric_fragment.xml b/Android/doric/src/main/res/layout/doric_fragment.xml index 0f36c22b..7af124c8 100644 --- a/Android/doric/src/main/res/layout/doric_fragment.xml +++ b/Android/doric/src/main/res/layout/doric_fragment.xml @@ -1,5 +1,6 @@ diff --git a/Android/doric/src/main/res/layout/doric_framgent_panel.xml b/Android/doric/src/main/res/layout/doric_framgent_panel.xml new file mode 100644 index 00000000..7e800983 --- /dev/null +++ b/Android/doric/src/main/res/layout/doric_framgent_panel.xml @@ -0,0 +1,4 @@ + + \ No newline at end of file