gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 21:16:22 25 4
gpt4 key购买 nike

我已经实现了选项卡 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/

25 4 0