1

私の MasterDetail フローでは、この関数を呼び出してリストを作成します。

public class Ansicht extends SherlockFragmentActivity
{
    @Override
    protected void onCreate(Bundle savedInstanceState) 
    {
        //...
        ListItems.setupMainItems(this);
        //...
    }
}

public class ListItems 
{
    public static List<DetailListItem> ITEMS = new ArrayList<DetailListItem>();
    public static Map<String, DetailListItem> ITEM_MAP = new HashMap<String, DetailListItem>();

    public static void addItem(String value, Typ t) 
    {
        DetailListItem item = new DetailListItem(value, t);

        ITEMS.add(item);
        ITEM_MAP.put(item.id, item);
    }

    //...
}

public class ListControl extends SherlockListFragment
{
    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        adapter = new ArrayAdapter<ListItems.DetailListItem>(getSherlockActivity(), R.layout.simple_listitem, android.R.id.text1,ListItems.ITEMS);

        setListAdapter(adapter);
    }

    //...
}

しかし、アプリを閉じて再度起動すると、アイテムがもう一度挿入されます。onCreate でこの関数を呼び出す必要はないと思いますが、onCreate が呼び出される最初のメソッドであるため、このイメージはあまり役に立ちません。

私のsetupMainItemsメソッドでは、addItem メソッドのみを呼び出します。onPauseonResumeがオーバーライドされることはありません。ホームボタンでアプリを閉じるとすべてうまくいきますが、戻るボタンでアプリを閉じるとアイテムが2回挿入されます。

4

1 に答える 1

1

次のようなことができます

if(ListItems.ITEMS == null || ListItems.ITEMS.size() == 0)
    ListItems.setupMainItems(this);

そうすれば、アイテムがまだ追加されていない場合にのみアイテムが追加されます

于 2013-06-21T09:54:30.800 に答える