viewPager.setCurrentItem()在onActivityResult中不起作用

时间:2018-02-12 18:33:29

标签: android listview android-fragments android-intent onactivityresult

我已实施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)(例如按钮点击),这次它正在运行。

0 个答案:

没有答案