安卓+ ListFragment与自定义视图层次结构 [英] Android + ListFragment with a custom view hierarchy
本文介绍了安卓+ ListFragment与自定义视图层次结构的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我试图从 onCreateView(LayoutInflater,ViewGroup中,捆绑)
返回自己的视图层次结构,以自定义片段布局。这我膨胀的自定义视图,但似乎堆栈,而不是在膨胀的意见,我一次看到的一切。任何帮助是AP preciated。
MyActivity.java:
公共类MyActivity扩展FragmentActivity {
@覆盖
公共无效的onCreate(包savedInstanceState){
super.onCreate(savedInstanceState);
如果(getSupportFragmentManager()。findFragmentById(android.R.id.content)== NULL){
ArrayListFragment名单=新ArrayListFragment();
。getSupportFragmentManager()的BeginTransaction()加(android.R.id.content,列表).commit();
}
}
公共静态类ArrayListFragment扩展ListFragment {
@覆盖
公共查看onCreateView(LayoutInflater充气,容器的ViewGroup,捆绑savedInstanceState){
。inflater.getContext()getSystemService(Context.LAYOUT_INFLATER_SERVICE);
inflater.inflate(R.layout.main,集装箱);
返回super.onCreateView(充气,容器,savedInstanceState);
}
@覆盖
公共无效onActivityCreated(包savedInstanceState){
super.onActivityCreated(savedInstanceState);
字符串列表[] = {拉里,萌,卷毛};
setListAdapter(新ArrayAdapter<字符串>(getActivity(),android.R.layout.simple_list_item_1,列表));
}
}
}
的main.xml
< XML版本=1.0编码=UTF-8&GT?;
<的LinearLayout
的xmlns:机器人=http://schemas.android.com/apk/res/android
机器人:方向=垂直
机器人:layout_width =match_parent
机器人:layout_height =match_parent
机器人:以下属性来=8DP
机器人:paddingRight =8DP>
<按钮
机器人:layout_width =FILL_PARENT
机器人:layout_height =WRAP_CONTENT
机器人:文本=这是一个按钮/>
<的ListView
机器人:ID =@机器人:ID /列表
机器人:layout_width =match_parent
机器人:layout_height =match_parent
机器人:后台=#00FF00
机器人:layout_weight =1
机器人:drawSelectorOnTop =FALSE/>
<的TextView
机器人:ID =@机器人:ID /空
机器人:layout_width =match_parent
机器人:layout_height =match_parent
机器人:后台=#FF0000
机器人:文本=无数据/>
< / LinearLayout中>
解决方案
我是不是返回ListFragment类的onCreateView方法中的新观点。例如:
@覆盖
公共查看onCreateView(LayoutInflater充气,容器的ViewGroup,捆绑savedInstanceState){
查看查看= inflater.inflate(R.layout.main,NULL);
返回查看;
}
一切运作良好,现在在Android中的土地!
I'm attempting to customize the fragment layout by returning my own view hierarchy from onCreateView(LayoutInflater, ViewGroup, Bundle)
. This inflates my custom view, but seems to stack the views instead of inflating within, I see everything at once. Any help is appreciated.
MyActivity.java:
public class MyActivity extends FragmentActivity{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getSupportFragmentManager().findFragmentById(android.R.id.content) == null) {
ArrayListFragment list = new ArrayListFragment();
getSupportFragmentManager().beginTransaction().add(android.R.id.content, list).commit();
}
}
public static class ArrayListFragment extends ListFragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
inflater.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
inflater.inflate(R.layout.main, container);
return super.onCreateView(inflater, container, savedInstanceState);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
String List[] = {"Larry", "Moe", "Curly"};
setListAdapter(new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, List));
}
}
}
main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="8dp"
android:paddingRight="8dp">
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="THIS IS A BUTTON" />
<ListView
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#00FF00"
android:layout_weight="1"
android:drawSelectorOnTop="false" />
<TextView
android:id="@android:id/empty"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FF0000"
android:text="No data" />
</LinearLayout>
解决方案
I wasn't returning the new view within the onCreateView method of the ListFragment class. For instance:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.main, null);
return view;
}
All works well now in the land of Android!
这篇关于安卓+ ListFragment与自定义视图层次结构的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文