17

मैं onCreateView(LayoutInflater, ViewGroup, Bundle) से अपना स्वयं का दृश्य पदानुक्रम लौटकर खंड लेआउट को कस्टमाइज़ करने का प्रयास कर रहा हूं। यह मेरे कस्टम व्यू को फुलाता है, लेकिन लगता है कि अंदर आने के बजाय विचारों को ढेर करना है, मैं सबकुछ एक साथ देखता हूं। किसी भी मदद की सराहना की है।एंड्रॉइड + कस्टम व्यू पदानुक्रम के साथ सूचीफ्रेम

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> 
+0

यह भी ध्यान रखें, मैं android-समर्थन-v4 उपयोग कर रहा हूँ। एंड्रॉयड डॉक्स से, यह स्पष्ट रूप से कहा गया है: "ListFragment डिफ़ॉल्ट लेआउट है कि एक एकल सूची दृश्य के होते है फिर भी, यदि आप चाहें, तो आप onCreateView से अपने खुद के दृश्य पदानुक्रम लौटने द्वारा टुकड़ा लेआउट अनुकूलित कर सकते हैं (। लेआउट इन्फ्लेटर, व्यू ग्रुप, बंडल)। ऐसा करने के लिए, आपके दृश्य पदानुक्रम में आईडीव्यू "आईडी एंड्रॉइड: आईडी/सूची" आईडी के साथ ListView ऑब्जेक्ट होना चाहिए (या अगर यह कोड में है तो सूची)। " – worked

उत्तर

33

मैं ListFragment वर्ग के onCreateView विधि के भीतर नया दृश्य वापस नहीं किया गया था। उदाहरण के लिए:

 @Override 
     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
      View view = inflater.inflate(R.layout.main, null); 
      return view; 
     } 

सभी एंड्रॉइड की भूमि में अब अच्छी तरह से काम करता है!

+4

आपके 'ऑनक्रेट व्यू' में मुट्ठी रेखा जरूरी नहीं है (यह वास्तव में कुछ भी नहीं कर रही है ...) inflater पहले से ही पारित हो चुका है (जिसे आप उपयोग करते हैं)। – ashughes

+1

अच्छा बिंदु ... अद्यतन किया गया। – worked

+0

क्या आप अधिक जानकारी दे सकते हैं? –

1
getSupportFragmentManager().beginTransaction().add(android.R.id.content, list).commit(); 

सूची स्वीकार नहीं की गई है, यह एक टुकड़े की तलाश में है।

2

मैं आप बेहतर चाहते

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
View root = inflater.inflate(R.layout.main, container, false); 
return root; 
} 
0
इस पद्धति उपयोग

लगता है, पूरी तरह से काम करता है!

inflater.inflate(R.layout.list_layout, container, false); 

सार्वजनिक देखें फुलाना (XmlPullParser पार्सर, ViewGroup जड़, बूलियन attachToRoot)

attachToRoot फुलाया पदानुक्रम रूट पैरामीटर के साथ संलग्न किया जाना चाहिए या नहीं? यदि गलत है, तो रूट का उपयोग केवल एक्सएमएल में रूट व्यू के लिए लेआउट पैराम्स के सही उप-वर्ग बनाने के लिए किया जाता है।

2

अनुकूलित रास्ते और गोली मार दी कोड

@Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     return inflater.inflate(R.layout.list_alphabet, container, false); 
    } 
संबंधित मुद्दे