我已实施FragmentStatePagerSupport。我有142页。我还有一个MyListActivity活动并且有ListView。当我单击ListView项时,它返回一个页码。我想将此页码用于viewPager当前页面。 viewPager.setCurrentItem()
在onActivityResult中不起作用。
以下是我调用startActivityForResult的方法:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu1:
Intent intent = new Intent(this, MyListActivity.class);
startActivityForResult(icindekiler, 0);
return true;
default:
return super.onOptionsItemSelected(item);
}
}
这是MyListActivity的listView:
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
ListViewContent selectedItem = (ListViewContent) parent.getItemAtPosition(position);
int pageNo = book.getSpine().getResourceIndex(selectedItem.getResource().getHref());
Intent data = new Intent();
data.putExtra("PageNo", pageNo); // pageNo: 0 or 1 or 2 or ... or 142
setResult(0, data);
finish();
}
});
FragmentPageStateSupport活动中的onActivityResult方法:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 0 && resultCode == 0) {
if (data.hasExtra("PageNo")) {
pageNo = data.getExtras().getInt("PageNo");
Toast.makeText(getBaseContext(), "pageNo is " + pageNo, Toast.LENGTH_SHORT).show();
viewPager.setCurrentItem(pageNo);
}
}
}
例如pageNo
为11,Toast表示“pageNo为11”,但viewPager
不会更改。当我在Android Studio中使用调试时,应用程序运行Looper.java。我在不同的方法上尝试viewPager.setCurrentItem(11)
(例如按钮点击),这次它正在运行。