0

我正在使用片段活動。我的一項活動有一個微調。我設置了它的適配器。問題是,只要我切換到該活動,微調值就會增加。它實際上將相同的值添加到微調器中而不刪除以前的值。如何解決它?我的代碼如下:每當我點擊活動時,微調值都會增加一倍

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); 
    } 

} 
+0

AddPackageFragment.java的對象不會重新創建,但其onCreateView()再次調用(在同一對象上)。正如下面的答案所指出的那樣,您需要清除數組,以便在每次調用時只將新值填充到數組中,並將舊數據清除。 –

回答

1

爲了詳細說明@Dimmerg

基於該片段的生命週期,你onCreateView將被調用一次以上。所以你必須考慮到這一點,並相應地清除值(或列表)。

Fragment lifecycle

2

試試這個:

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

我想這是因爲你的陣列不被清除,而不是微調適配器。

相關問題