2016-11-27 3 views
0

В моем приложении мне нужно захватить несколько данных от пользователя при регистрации. Чтобы не упаковывать несколько файлов EditText в один макет, я решил использовать несколько макетов из одного действия. Один макет будет захватывать электронные письма, другие номера телефонов и так далее. Когда я ввожу данные в EditText в один макет, кнопка возвращает меня к следующему. То, что я сделал (как тест) заключается в следующем:Захват данных из нескольких макетов в одном действии

SignupActivity

public class SignupActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_signup); 

    final List<String> myData = new ArrayList<>(); 
    final EditText displayNameEditText = (EditText) findViewById(R.id.displayNameEditText); 

    Button mainNextButton = (Button) findViewById(R.id.nextButtonMain); 
    mainNextButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      myData.add(displayNameEditText.getText().toString()); 
      setContentView(R.layout.phone_numbers_capture); 
      final EditText phone1EditText = (EditText) findViewById(R.id.phone1EditText); 
      Button phoneNextButton = (Button) findViewById(R.id.phoneNumbersUINextButton); 
      phoneNextButton.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View view) { 
        myData.add(phone1EditText.getText().toString()); 
        Log.e("TAG IT", "Full name : " + myData.get(0)); 
        Log.e("TAG IT", "Phone 1 : " + myData.get(1)); 
       } 
      }); 

     } 
    }); 
} 
} 

Выход я получаю это (LogCat)

enter image description here

Затем я могу передать эта информация от myData нравится, когда я добираюсь до последнего макета:

MyObject myObject = new MyObject(); 
myObject.setFullName(myData.get(0)) //Method expects a String, no issues 
myObject.setPhoneNumberOne(myData.get(1)) //Method expects a string, no issues 

Теперь я чувствую, что это не лучший способ сделать это. Прежде всего, What If, я хочу захватить различные типы данных из каждого макета?

List<Object> myData Приходит на ум, а затем что? Какой другой подход можно использовать для достижения этого? Если я оставлю это как есть, то какие проблемы я могу встретить в будущем, помимо очевидного типа данных, о котором я упомянул?

+0

вы должны использовать базу данных для своих целей –

ответ

0

Если вы хотите разделить свою страницу регистрации на несколько страниц подстраницы, я бы порекомендовал фрагменты.

Например, если у вас есть 3 секции в одной регистрации затем добавить три фрагмента может быть в ViewPager для лучшего UX

все данные могут быть непосредственно доступ через операцию с использованием интерфейса/б фрагментов и активности

+0

Итак, я нашел способ сделать это [здесь] (http://stackoverflow.com/questions/18413309/how-to-implement-a-viewpager-with-different -fragments-layouts), но затем, как я могу получить данные из каждого фрагмента в свою хостинг? –

+0

Использование метода getter и setter или лучшего использования класса интерфейса, реализованного в Activty –

0

Вы можете получить все данные из 1-й деятельности, помещенные в комплект, а затем добавить пакет в дополнение к намерениям, а во 2-й операции получить пакет, добавить новые данные и сделать все снова.

Bundle bundle = new Bundle(); 
bundle.putString("Name", "full name"); 
... 
intent.putExtras(bundle); 

В 2-ой деятельности используют intent.getExtras() для получения данных

+0

Но мне не нужно переходить ко второму действию. Настойчивость данных будет выполнена в RegistrationActivity –

+0

@ ojonugwa-ochalifu AFAIK, существует только один макет для одного действия , Итак, вы должны использовать несколько видов деятельности. – Steve

+0

WRONG.An может иметь несколько макетов –

0

Что причина хранения данных в списке? Просто напишите прямо на свой объект данных в этом случае MyObject, но подумайте об этом более точно.

Если вам нужно сохранить несколько номеров телефонов или электронной почты. Рассмотрите возможность добавления списков в структуру данных MyObject`.

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