java - 在 Gingerbread 中水平滑动后未触发操作栏的 onNavigationItemSelected(int position, long itemId)

标签 java android actionbarsherlock flags android-gesture

我已经实现了选项卡 View 以及水平滑动 View (以更改选项卡),导航模式作为应用程序的列表。我正在使用 ActionBarSherlock 和 TabPageIndicator。更改标签后,我使用 fragment 重新加载内容。

在下拉微调器中,我有 2 个项目。每当 Activity 重新加载或点击选项卡后,这些都会被选中。

但是,如果执行滑动以选择其他选项卡,则在 Gingerbread 版本中不会触发 onNavigationItemSelected(int position, long itemId) :( 我们已经在 Gingerbread 2.3.6、2.3.3 上进行了测试。

logcat 中,我收到了这个 warning 消息 "View:onTouchEvent:ViewFlags"is DISABLED

但是,它在 ICS、Froyo 等上运行良好。

非常感谢您的帮助。

以下是代码 fragment :

public class MainPageActivity extends SherlockFragmentActivity implements
        ActionBar.OnNavigationListener {

    MenuItem menuItem;
    EditText searchText;
    public static Context mContext;
    public static DataAdapter dataAdapter;
    ArrayList<String> accountList;
    public static List<View> currentViewBeingChanged = new ArrayList<View>();

    public static LayoutInflater layoutInflater;
    public static String checktab = "running", nameComp;
    int isRefresh;
    public static boolean isAutoRefresh = true;
    public static ArrayList<String> listItems;
    public static boolean check;
    public static boolean isAtleastOnce = true, listToBeRefreshed = false;
    public static ActionBar actionBar;
    public static int itemPosition, listPosition;
    public static FragmentManager fragmentManager;
    InputMethodManager imm;

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        mContext = this;

        layoutInflater = getLayoutInflater();

        fragmentManager = getSupportFragmentManager();

        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_page);

        actionBar = getSupportActionBar();
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);

        imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);

        Context context = getSupportActionBar().getThemedContext();

        ArrayAdapter<String> adapter = new ArrayAdapter<String>(context,
                android.R.layout.simple_spinner_dropdown_item);
        adapter.clear();
        for (int i = 0; i < ManageAccountLists.accountList.size(); i++) {
            adapter.add(ManageAccountLists.accountList.get(i));
        }

        actionBar.setListNavigationCallbacks(adapter, this);

        tabPagerFunction();

    }

    public void tabPagerFunction() {

        FragmentPagerAdapter adapter = new GoogleMusicAdapter(
                getSupportFragmentManager());
        adapter.notifyDataSetChanged();

        ViewPager pager = (ViewPager) findViewById(R.id.pager);
        pager.setAdapter(adapter);

        checktab = "running";

        final TabPageIndicator indicator = (TabPageIndicator) findViewById(R.id.indicator);
        indicator.setViewPager(pager);

        pager.setOnPageChangeListener(new OnPageChangeListener() {

            @Override
            public void onPageSelected(int arg0) {

                System.out.println("Tab selected..................");

                if (arg0 == 0) {

                    // Running tab is selected
                    indicator.setCurrentItem(arg0);

                    checktab = "running";
                    RunningInstancesActivity runningInstancesActivity = new RunningInstancesActivity();
                    runningInstancesActivity.callThread();

                } else {

                    // Stopped tab is selected
                    indicator.setCurrentItem(arg0);
                    checktab = "stopped";
                    StoppedInstancesActivity stoppedInstancesActivity = new StoppedInstancesActivity();
                    stoppedInstancesActivity.callThread();
                    InstanceStatusUpdate.isOnPostExecute = false;

                }

            }

            @Override
            public void onPageScrolled(int arg0, float arg1, int arg2) {

            }

            @Override
            public void onPageScrollStateChanged(int arg0) {

            }
        });

    }

    class GoogleMusicAdapter extends FragmentPagerAdapter {

        private final String[] CONTENT = new String[] { "Running", "Stopped" };

        public GoogleMusicAdapter(FragmentManager fm) {
            super(fm);
            notifyDataSetChanged();

        }

        @Override
        public Fragment getItem(int position) {

            switch (position) {
            /** Running tab is selected */
            case 0:
                checktab = "stopped";
                return RunningInstancesActivity.newInstance(0);

                /** Stopped tab is selected */
            case 1:

                checktab = "running";
                return StoppedInstancesActivity.newInstance(1);
            }
            return null;

        }

        @Override
        public CharSequence getPageTitle(int position) {
            return CONTENT[position % CONTENT.length].toUpperCase();
        }

        public CharSequence getPageTitle(int position, int number) {
            return CONTENT[position % CONTENT.length].toUpperCase();
        }

        @Override
        public int getCount() {
            return CONTENT.length;
        }
    }

    @Override
    public boolean onNavigationItemSelected(int itemPosition, long itemId) {

             System.out.println("Navigation item selected");

        // Performs fetching
    }



    @Override
    public boolean dispatchTouchEvent(MotionEvent ev) {

        System.out.println("Dispatch touvh event..");

        return super.dispatchTouchEvent(ev);

    }

}

最佳答案

尝试这样做

dependencies {

compile "com.android.support:appcompat-v7:18.0.+"
}

并改用支持库。

关于java - 在 Gingerbread 中水平滑动后未触发操作栏的 onNavigationItemSelected(int position, long itemId),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13600835/

相关文章:

java - 如何将我的 Eclipse Maven Selenium Webdriver TestNG Java 项目从一台 PC 传输到另一台 PC?

java - put 指标(如 a4j :status) on h:commandButton

android - 为多个对象使用通用类(actionBar 选项卡)

java - 如果我只有解密方法,如何重新创建 AES 加密方法

java - 什么会导致 java 进程逐渐减少 CPU 份额?

android - 如何返回关闭 Activity 之间的 Activity ?

java - 如何在android中将按钮放在 Activity 标题旁边?

java - '创建新的 Android 虚拟设备 (AVD )' hangs after I click ' ok'

android - 如何使用 ActionBar Sherlock 设置选项卡样式

android - ActionBarSherlock - 使用自定义 View 显示在操作栏上方的选项卡