2016-02-27 2 views
0

У меня возникли проблемы с использованием нескольких версий составного элемента управления, который я создал. Когда я использую его дважды в том же Fragment, любой текст, который я вводил в поле EditText 1-го элемента управления, заменяется текстом, введенным мной в EditText второго элемента управления после поворота устройства. Кажется, что две версии моего контроля влияют друг на друга.Android Compound Controls, влияющие друг на друга

Мой контроль соединение расширяет LinearLayout и выглядит следующим образом:

public class MyCompoundControl extends LinearLayout { 

    public MyCompoundControl(Context context, AttributeSet attrs) { 
     super(context, attrs); 

     LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     inflater.inflate(R.layout.layout_my_compound_control, this, true); 

     TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.MyControlViewOptions); 
     String value1 = a.getString(R.styleable.MyControlViewOptions_firstvalue); 
     String value2 = a.getString(R.styleable.MyControlViewOptions_secondvalue); 
     a.recycle(); 

     EditText editText1 = (EditText) findViewById(R.id.edittext_label_1); 
     EditText editText2 = (EditText) findViewById(R.id.edittext_label_2); 
     TextView textView1 = (TextView) findViewById(R.id.textview_label_1); 
     TextView textView2 = (TextView) findViewById(R.id.textview_label_2); 

     textView1.setText(value1); 
     textView2.setText(value2); 
    } 
} 

Ниже мой layout.xml файл для управления соединением, которое использует слияние:

<?xml version="1.0" encoding="utf-8"?> 
     <merge xmlns:android="http://schemas.android.com/apk/res/android">  
      <LinearLayout 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:orientation="horizontal"> 
       <TextView 
        android:id="@+id/textview_label_1" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" /> 
       <EditText 
        android:id="@+id/edittext_label_1" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:inputType="numberDecimal" /> 
      </LinearLayout> 
      <LinearLayout 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:orientation="horizontal"> 
       <TextView 
        android:id="@+id/textview_label_2" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" /> 
       <EditText 
        android:id="@+id/edittext_label_2" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:inputType="numberDecimal" /> 
      </LinearLayout> 
     </merge> 

Затем я использую этот контроль 2x в моем макете :

xmlns:mycustom="http://schemas.android.com/apk/res-auto" 

    ... 

    <com.android.mytracker.custom.MyCompoundControl 
     android:id="@+id/control_1" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="vertical" 
     mycustom:firstvalue="weight1" 
     mycustom:secondvalue="weight2" /> 

    <com.android.mytracker.custom.MyCompoundControl 
     android:id="@+id/control_2" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="vertical" 
     mycustom:firstvalue="height1" 
     mycustom:secondvalue="height2" /> 

Тогда, если я ввожу текст в EditText (edittext_label_1) в control_1 и введите текст в EditText (edittext_label_1) в control_2. Затем, когда я поворачиваю свое устройство, текст, введенный мной в control_2, теперь отображается как в control_1, так и в контроле_2`.

Это не мой код, делающий это. Если я затем переключу порядок моих составных элементов управления в фрагмент (например, control_2, затем control_1), то он переключается. Элемент управления, который я поставил первым в своем макете , всегда имеет значение EditText, которое перезаписывается элементом управления, который появляется после него, когда я поворачиваю устройство.

ответ

Смежные вопросы