-1

私はsingleTopとして活動しています

ここに oncreate() の部分があります

    ListView mainListView = (ListView) findViewById(R.id.order_item_list);
     mainListView.clearChoices();
     mainListView.requestLayout();

     listAdapter = new OrderItemAdapter(this,
            R.layout.list_item_order_item, OrderActivity.Order.OrderItems);

    mainListView.setAdapter(listAdapter);

    SparseBooleanArray checkedItems= mainListView.getCheckedItemPositions();
    Log.println(2, "s", Integer.toString(checkedItems.size() ));
}

デバッガーのcheckedItemsを使用すると、0になります。しかし、アクションをクリックすると、checkedItems には以前の値が含まれています。デバッガーを使用した参照は、同じオブジェクトにあるようです。

@Override
    public boolean onOptionsItemSelected(MenuItem menuItem) {
        switch (menuItem.getItemId()) {
        case android.R.id.home:

            //finish();
            // NavUtils.navigateUpFromSameTask(this);
            confirmExit();
            return true;

        case R.id.delete_button:
            ListView mainListView = (ListView) findViewById(R.id.order_item_list);

            SparseBooleanArray checkedItems= mainListView.getCheckedItemPositions();
            boolean hasOld=false;
            break;
        }
        return true;
    }
4

1 に答える 1

0

問題はここから来ているようです。

https://github.com/android/platform_frameworks_base/blob/android-cts-2.3_r12/core/java/android/widget/ListView.java

   @Override
        public Parcelable onSaveInstanceState() {
            Parcelable superState = super.onSaveInstanceState();
            return new SavedState(superState, mCheckStates, mCheckedIdStates);
        }

        @Override
        public void onRestoreInstanceState(Parcelable state) {
            SavedState ss = (SavedState) state;

            super.onRestoreInstanceState(ss.getSuperState());

            if (ss.checkState != null) {
               mCheckStates = ss.checkState;
            }

            if (ss.checkIdState != null) {
                mCheckedIdStates = ss.checkIdState;
            }
        }
于 2013-01-15T16:51:18.707 に答える