安卓+ ListFragment与自定义视图层次结构 [英] Android + ListFragment with a custom view hierarchy

查看:132
本文介绍了安卓+ 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:机器人=htt​​p://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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆