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

我想这是因为你的阵列不被清除,而不是微调适配器。

相关问题