2013-03-28 2 views
1

Я пытаюсь добавить ListView, используя Fragment. Я знаю, что это можно сделать, расширив ListFragment и так далее. Но я хочу расширить Fragment, а затем добавить listView. Но следующий код не работает (его тоже не отображаются).Добавить список в фрагмент без расширения ListFragment

класса Фрагмент

public class OtherFragment extends Fragment { 

    final String[] items = new String[] { "Android", "iPhone", "WindowsMobile", 
      "Blackberry", "WebOS", "Ubuntu", "Windows7", "Max OS X", 
     "Linux", "OS/2" }; 

    @Override 
    public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState) 
    {  
     View view = inflater.inflate(R.layout.activity_main, container,false); 
     ListView list = (ListView)view.findViewById(R.id.listView1); 
     ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, items); 
     list.setAdapter(adapter); 
     return view; 
    } 
} 

XML-файл для фрагмента

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context=".MainActivity" > 

    <ListView 
     android:id="@+id/listView1" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" > 
    </ListView> 

</RelativeLayout> 

MainActivity (Основной класс)

public class MainActivity extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     FragmentManager fm= getFragmentManager(); 
     if(fm.findFragmentById(R.id.fragmentContent)==null) 
     { 
      Log.d("add fragment", "fragment added"); 
      FragmentTransaction ft = fm.beginTransaction(); 
      ft.add(R.id.fragmentContent, new OtherFragment()); 
      ft.commit(); 
     } 
    } 
} 

main.xml (основной XML-файл)

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context=".MainActivity" > 

    <LinearLayout 
     android:id="@+id/fragmentContent" 
     android:layout_width="0px" 
     android:layout_height="match_parent"/> 

</RelativeLayout> 

Исправлено:

android:layout_width="match_parent" 

Гадкий ошибку. Благодаря Антонио Франсиско

+1

Это неправильный андроид: layout_width = "0px", должно быть match_parent. –

+0

Предпочтительный метод - использовать android: layout_width = "0dp", а затем добавить android: layout_weight = "some number" – Ge3ng

+0

@nininho thanx. ЛОЛ меня. Я думаю, что затмение кое-что предложило, а затем я скопировал его. Спасибо чувак. – dejavu

ответ

0

вашей основной деятельности необходимо расширить FragmentActivity не только активность

public class MainActivity extends FragmentActivity { 

И ваш макет должен быть фрагмент не линейная компоновка

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context=".MainActivity" > 

    <Fragment 
    android:id="@+id/fragmentContent" 
    android:layout_width="0px" 
    android:layout_height="match_parent"/> 

</RelativeLayout> 
+0

Я добавляю фрагмент динамически, поэтому я не думаю, что мне нужно добавить тег фрагмента в xml-файл. – dejavu

+0

Это прекрасно, но вам все равно нужно расширить FragmentActivity. – Ge3ng

+0

сделали это, все еще нет результата – dejavu

0

Исправлено:

android:layout_width="match_parent" 

Уродливая ошибка.

0

Лучше использовать LisFragment, это позволит избежать других проблем в будущем. что-то вроде, если вы открыли фрагмент над обычным фрагментом со списком, у вас возникли некоторые проблемы с обработкой onCLick.

Смежные вопросы