0

Это очень пустой вопрос. Я использую ListFragment, чтобы показать список разных вещей в моем приложении. Теперь я хочу применить дизайн материалов, используя панель приложений (панель инструментов) вместо ActionBar для поддержки широкого спектра устройств. В Google's documentation, чтобы использовать панель приложений, действие должно расширить AppCompatActivity. Но я уже переоформила ListFragment в моем коде следующим образом:Как объединить ListFragment и AppCompatActivity?

public class BookListFragment extends ListFragment { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     BookAdapter adapter = new BookAdapter(getActivity(), bookList, 0); 
     setListAdapter(adapter); 
} 

Итак, как я могу продлить AppCompatActivity в моей BookListFragment?

+0

ListFragment является фрагментом, и нет никакой необходимости изменять его. Вы имеете в виду ListActivity? –

+0

Как сказано выше, это фрагмент, и вы не можете просто изменить его на AppCompatActivity, но если вы используете ListActivity из библиотеки поддержки (я не знаю, имеет ли это действие), активность уже распространяется на AppCompatActivity. –

+0

Если в библиотеке поддержки нет ListActivity, вы можете просто использовать AppCompatActivity с ListView или RecyclerView –

ответ

0

Вы можете расширить AppCompatActivity без каких-либо проблем:

Вставьте ListView в свой activitys макет файла XML. У вас уже есть один (потому что вы использовали ListActivity), поэтому изменить его идентификатор:

<ListView android:id="@+id/activity_list"></Listview> 

теперь используют этот ListView в своей деятельности:

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    ListView lv = (ListView) findViewById(R.id.activity_list); 
    BookAdapter adapter = new BookAdapter(getActivity(), bookList, 0); 
    lv.setAdapter(adapter); 
} 
+0

, но теперь она показывает ошибку «не может разрешить метод findViewById (int)». – mrh

+0

не забудьте добавить 'setContentView()' непосредственно под 'super.onCreate (savedInstanceState)', иначе 'findViewById()' не имеет ссылки на то, где он должен найти свои Представления от –

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