#android #fragmentpageradapter #swipeview
#Android #fragmentpageradapter #просмотр прокрутки
Вопрос:
Я пытаюсь реализовать просмотр с помощью приложения Tabs, но мой адаптер выдает ошибку. Функция конструктора не определяется в моей основной деятельности. Я использовал функцию getSupportFragmentManager() в качестве аргумента, и все мои файлы являются файлами .support.v4.app.
Это код для моего адаптера. Пожалуйста, обратите внимание, что я еще не определил фрагменты.
package com.example.tabpractice;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
public class TabsPagerAdapter extends FragmentPagerAdapter {
public TabsPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int arg0) {
switch (arg0) {
case 0:
return new Fragment1();
case 1:
return new Fragment2();
case 2:
return new Fragment3();
case 3:
return new Fragment4();
break;
}
return null;
}
@Override
public int getCount() {
return 4;
}
}
И это код для моей основной деятельности
package com.example.tabpractice;
import android.app.ActionBar;
import android.app.ActionBar.Tab;
import android.app.ActionBar.TabListener;
import android.app.Activity;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
public abstract class MainActivity extends FragmentActivity implements TabListener{
ViewPager vPager;
TabsPagerAdapter mAdapter;
ActionBar actionBar;
String[] tabs = {"Home","Income","Expense","Transactions"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
vPager = (ViewPager) findViewById(R.id.pager);
actionBar = getActionBar();
mAdapter = TabsPagerAdapter(getSupportFragmentManager());
vPager.setAdapter(null);
actionBar.setHomeButtonEnabled(false);
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
for(String tab_name : tabs){
actionBar.addTab(actionBar.newTab().setText(tab_name)
.setTabListener(this));
}
}
Комментарии:
1.Вы забыли создать экземпляр
TabsPagerAdapter
, вместоTabsPagerAdapter(...);
того, чтобы пытаться использоватьnew TabsPagerAdapter(...);
и почему вы не используетеAppCompat v7
ActionBarActivity
и не используетеgetSupportActionBar()
вместоgetActionBar()
?2. @Wakim Спасибо! Я новичок в этом, и я забыл добавить новый! Что касается панели действий, я не совсем уверен в том, что вы предлагаете мне делать. Если бы вы могли опубликовать ссылку, это было бы полезно. Еще раз спасибо!
3. Взгляните на эту ссылку, в ней содержится ссылка на
AppCompat v7
библиотеку, которая включает поддержкуActionBar
для использования на Android ниже SDK 11. developer.android.com/guide/topics/ui/actionbar.html
Ответ №1:
Вы забыли создать экземпляр TabsPagerAdapter
, вместо TabsPagerAdapter(...);
того, чтобы пытаться использовать new TabsPagerAdapter(...);