请检查我的代码:
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
JSONObject jsonlayout = null ;
try {
jsonlayout = new JSONObject(loadJSONFromAsset(getContext()));
} catch (JSONException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
ProteusLayoutInflater layoutInflater = (ProteusLayoutInflater)inflater;
ProteusView view = layoutInflater.inflate(jsonlayout.toString(), null, container, 0);
return view.getAsView();
}我希望使用Proteus库来创建视图并将其呈现为片段。
你能告诉我我做错了什么吗?通过这段代码,我得到了以下错误:
不能将com.android.internal.policy.PhoneLayoutInflater转换为com.flipkart.android.proteus.ProteusLayoutInflater
发布于 2017-12-18 16:18:31
下面是Fragment的一些示例代码,您应该可以开始使用这些代码:
记住将
gson-adapter添加到应用程序的build.gradle文件中。
dependencies {
compile 'com.github.flipkart-incubator.proteus:gson-adapter:5.0.0-rc12'
}在您的片段中,根据以下内容添加和修改:
// some private fields in the fragment
private Proteus proteus;
private ProteusContext context;
private ProteusLayoutInflater layoutInflater;
private Gson gson;
public void onAttach (Activity activity) {
// create a new instance of the proteus type adapter
// for gson and register it with gson.
ProteusTypeAdapterFactory adapter = new ProteusTypeAdapterFactory(activity);
gson = new GsonBuilder().registerTypeAdapterFactory(adapter).create();
// create a new instance of proteus from the builder
proteus = new ProteusBuilder().build();
// get a new context object from proteus
context = proteus.createContextBuilder(activity).build();
// this context object has the proteus layout inflater
layoutInflater = context.getInflater();
// set the instance of proteus
ProteusTypeAdapterFactory.PROTEUS_INSTANCE_HOLDER.setProteus(proteus);
}
public ProteusContext getContext() {
return context;
}
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
String layoutString = loadJSONFromAsset(getContext());
// use gson to deserialize the string into a Layout object.
Layout layout = gson.fromJson(layoutString, Layout.class);
// the use the proteus layout inflater to inflate a new proteus view
ProteusView view = layoutInflater.inflate(layout, new ObjectValue());
return view.getAsView();
}这基本上是一个工作的例子,有很大的空间,以加强和改进。您应该直接到git,克隆它,玩演示应用程序,并查看ProteusActivity的代码作为参考实现。
https://stackoverflow.com/questions/47865866
复制相似问题