0

フラグメントアクティビティを使用しています。私の活動の1つにスピナーがあります。アダプターをセットしました。問題は、そのアクティビティに切り替えるたびに、スピナーの値が増加することです。実際には、以前の値を削除せずに、同じ値をスピナーに追加します。それを解決する方法は?私のコードは次のとおりです。

public class AddPackageFragment extends Fragment {

    View rootView; 
    EditText packageName;
    EditText packageNumber;
    Spinner network;
    CheckBox sim1;
    CheckBox sim2;
    RadioGroup type; 
    RadioGroup through;
    Button addPackage;
    Button actDetails;
    ArrayList<String> networks = new ArrayList<String>();
    ArrayAdapter<String> adapter;
    Context context;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {

        rootView = inflater.inflate(R.layout.add_package, container, false);
        initializeViews();
        setNetworks();
        setSpinner();

        return rootView;
    }

    void initializeViews() {
        packageName = (EditText)rootView.findViewById(R.id.pName);
        packageNumber = (EditText)rootView.findViewById(R.id.pNumber);
        network = (Spinner)rootView.findViewById(R.id.networkS);
        sim1 = (CheckBox)rootView.findViewById(R.id.sim1);
        sim2 = (CheckBox)rootView.findViewById(R.id.sim2);
        type = (RadioGroup)rootView.findViewById(R.id.typeGroup);
        through = (RadioGroup)rootView.findViewById(R.id.throughGroup);
        addPackage = (Button)rootView.findViewById(R.id.addPackage);
        actDetails = (Button)rootView.findViewById(R.id.activationDetails);
        context = getActivity().getApplicationContext();
        addPackage.setActivated(false);
        actDetails.setActivated(false);
    }

    void setNetworks() {
        networks.add("Mobilink");
        networks.add("Telenor");
        networks.add("Ufone");
        networks.add("Warid");
        networks.add("Zong");
        networks.add("Add New");
    }

    void setSpinner() {
        adapter = new ArrayAdapter<String>(context, R.layout.spinner_item, networks);
        network.setAdapter(null);
        network.setAdapter(adapter);
    }

}
4

2 に答える 2

2

これを試して:

void setNetworks() {
    networks.clear()
    networks.add("Mobilink");
    networks.add("Telenor");
    networks.add("Ufone");
    networks.add("Warid");
    networks.add("Zong");
    networks.add("Add New");
}

スピナーアダプターではなく、アレイがクリアされていないためだと思います。

于 2013-06-20T18:00:40.340 に答える
1

@Dimmergについて詳しく説明するには

フラグメントのライフサイクルに基づいて、onCreateView複数回呼び出されます。したがって、それを考慮して、それに応じて値(またはリスト)をクリアする必要があります。

フラグメントのライフサイクル

于 2013-06-20T18:02:57.617 に答える