0

Мне нужна помощь в обновлении LinearLayout с большим количеством полей EditText, которые добавляются программно. Когда добавляется новая информация, я сначала удаляю все поля с помощью removeAllViews(), чтобы начать с чистого листа. У меня также есть вкладка, поэтому, щелкнув на одной из вкладок, я запустил get/setter (класс sg), который я позже получаю из этого кода, когда эта вкладка выбрана. Я могу видеть в распечатках журнала, что то, что должно быть помещено в EditText, правильно ... но в окне EditText в моем приложении имя и значения не обновляются. Я попытался использовать invalidate(), но это не сработало. Какой хороший совет?Обновление/обновление Android EditText и LinearLayout программно не работает

Вот часть кода:

public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) { 
    rootView = inflater.inflate(R.layout.tab4_layout, container, false); 

    ... 
    ... 
    ... 

    //To remove all current views 
    myLinearLayout.removeAllViews(); 
    //myLinearLayout.invalidate(); //<--I tried that 
    for(int i : valueArrayNew){ 
     if(i==0) { 
      editableTextView = new EditText(context); 
      editableTextView.setHint(colNames[valueArrayNew.get(i)]); 
      editableTextView.setTextSize(20); 
      editableTextView.setId(valueArrayNew.get(i)); 
      editableTextView.setHintTextColor(getResources().getColor(R.color.lightgrey)); 
      editableTextView.setLayoutParams(params); 
      editableTextView.setText(""+sg.getName()); //<--The name is only updated the first time this code is run. 
      Log.d("HAZE", "Name: " + sg.getName());  //This is not the same name the second time I run and add text to the EditText. This printout is correct and prints the wanted name. 
      myLinearLayout.addView(editableTextView); 
     }else { 
      editableTextView = new EditText(context); 
      editableTextView.setHint(colNames[valueArrayNew.get(i)]); 
      editableTextView.setTextSize(20); 
      editableTextView.setId(valueArrayNew.get(i)); 
      editableTextView.setHintTextColor(getResources().getColor(R.color.lightgrey)); 
      editableTextView.setKeyListener(DigitsKeyListener.getInstance(".,")); 
      editableTextView.setLayoutParams(params); 
      editableTextView.setText(""+sg.getValueForNumber(i)); //<--The value is only updated the first time this code is run. 
      myLinearLayout.addView(editableTextView); 
     } 
    } 
    //myLinearLayout.invalidate(); //<--I tried that 

    ... 
    ... 
    ... 

    return rootView; 
} 




public class MyTabs extends Activity { 

// Declaring our tabs and the corresponding fragments. 
public ActionBar.Tab Tab1, Tab2, Tab3,Tab4; 
Fragment FragmentTab1 = new com.haze.purple.tabs.firstFragmentTab(); 
Fragment FragmentTab2 = new com.haze.purple.tabs.secondFragmentTab(); 
Fragment FragmentTab3 = new com.haze.purple.tabs.thirdFragmentTab(); 
Fragment FragmentTab4 = new com.haze.purple.tabs.fourthFragmentTab(); 
private static Context context; 
ActionBar actionBar; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout._fragment); 
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 

    // Asking for the default ActionBar element that our platform supports. 
    actionBar = getActionBar(); 

    // Screen handling while hiding ActionBar icon. 
    actionBar.setDisplayShowHomeEnabled(false); 

    // Screen handling while hiding Actionbar title. 
    actionBar.setDisplayShowTitleEnabled(false); 

    // Creating ActionBar tabs. 
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 

    Tab1 = actionBar.newTab().setText(R.string.tab1_name); 
    Tab2 = actionBar.newTab().setText(R.string.tab2_name); 
    Tab3 = actionBar.newTab().setText(R.string.tab3_name); 
    Tab4 = actionBar.newTab().setText(R.string.tab4_name); 

    // Setting tab listeners. 
    Tab1.setTabListener(new TabListener(FragmentTab1)); 
    Tab2.setTabListener(new TabListener(FragmentTab2)); 
    Tab3.setTabListener(new TabListener(FragmentTab3)); 
    Tab4.setTabListener(new TabListener(FragmentTab4)); 
    actionBar.addTab(Tab1); 
    actionBar.addTab(Tab2); 
    actionBar.addTab(Tab3); 
    actionBar.addTab(Tab4); 
    ... 
    ... 

.... и файл XML, как это:

A LinearLayout holds it all in in that a ScrollView and in that ScrollView I have another LinearLayout. IN the last LinearLayout I add all EditText text boxes. 

LinearLayout 
    ScrollView 
     LinearLayout 
+0

как вы добавляете 'фрагмент' в' fragmentManager' –

+0

Привет Я добавляю фрагменты в панель действий в oncreate в своей основной деятельности. У меня также есть setTabListener в этой активности. – user2034859

+0

Опубликовать ur-код операции с контейнером, а также, что я подозреваю, когда вы добавляете фрагменты в fragmanager u're, используя add. U нужно заменить фрагмент, когда вы нажмете на вкладку, чтобы она воссоздалась с начала, и вы можете видеть в ней новые данные. –

ответ

0

Спасибо за вашу помощь. Мне это удалось. Что я сделал для решения этой проблемы, так это добавить код в AsyncTask (в post execute ... потому что это работает на основном gutees), а затем заканчивается «myLinearLayout.invalidate(), чтобы быть уверенным». Теперь это работает :)

0

Вы можете попытаться удалить myLinearLayout из его родительского вида и затем создайте новый LinearLayout программно, а затем добавьте поля динамически. наконец, установив новый макет в его родительский вид

+0

Я действительно не знаю, как это сделать. Я тоже пробовал это сейчас: rootView.invalidate(); Одна вещь, что я добавил этот код и в evertime. Я переключаю кнопку, все представления обновляются правильно, но не только для oncreateView ... поэтому я должен нажать кнопку: Включить onff_witch = (Switch) rootView.findViewById (R .id.on_off_switch); onOffSwitch.setOnCheckedChangeListener (новый CompoundButton.OnCheckedChangeListener() { \t @Override \t общественного недействительными onCheckedChanged (CompoundButton buttonView, логическое IsChecked) { \t ... \t же код, как и в oncreateView \t ... \t} }); – user2034859

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