1

各ページViewPagerで使用するがあります。リスト項目のクリックと長い時計をそれぞれ処理するとListFragmentsを実装します。データはインターネット経由で読み込まれます。onListItemClickonContextItemSelectedListFragmentAsyncTask

望ましい動作は、リスト ビュー アイテムを短く押して詳細アクティビティを開始し、その場所の詳細を表示することです (これは天気アプリです)。ユーザーが長押しすると、コンテキスト メニューがポップアップ表示され、生データの表示など、他のオプションがユーザーに提供されます。

短いプレスと詳細アクティビティは正常に機能します。問題は、長押しのコンテキスト メニューです。ユーザーが 3 ページ目にいて、長押しを使用してリストの 2 番目の項目を選択し、その場所の [生データを表示] を選択すると、3 ページ目ではなく、2 ページ目の 2 番目の項目の生データが表示されます。

現在、setOffscreenPageLimit(1) を使用しています。これを setOffscreenPageLimit(2) に変更すると、3 ページ目の代わりに 1 ページ目のデータが表示されます。

コード:

@Override
public boolean onContextItemSelected(android.view.MenuItem item) {
    AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
    switch (item.getItemId()) {
    case R.id.cmenu_showRaw:    

        ViewGroup dataPanel = (ViewGroup) myListView.getChildAt(info.position);         
        TextView tvRaw = (TextView) dataPanel.findViewById(R.id.textRaw);
        TextView tvLocationID = (TextView) dataPanel.findViewById(R.id.textLocationId);

        showDismissDialog(tvRaw.getText().toString(), tvLocationID .getText().toString()); 
        return true;

生データと locationID データが現在 ViewPager に表示されているフラグメントからではなく、オフセット ページから引き出される理由を理解しようとしています。私はまだ Fragments を学んでいるので、おそらく何か微妙なものを見逃しています。

4

1 に答える 1

2

私はそれを理解しました:info.targetView私が長い間押し続けていた見解を私に与えます。そこから私はfindViewById必要なものを手に入れるためにできる。

于 2012-05-25T09:44:35.650 に答える