从一个活动中的多个布局捕获数据

时间:2016-11-27 12:24:43

标签: java android android-layout android-activity

在我的应用中,我需要在用户注册时捕获多个数据。为了避免将多个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

现在我觉得这不是最好的方法。首先,如果我想从每个布局中捕获不同的数据类型,该怎么办?

想到了{p> List<Object> myData,然后是什么?我可以用什么方法来实现这个目标?如果我保持原样,除了我提到的明显的数据类型之外,我将来会遇到哪些问题?

3 个答案:

答案 0 :(得分:0)

如果您想将注册页面拆分为多个子页面,那么我会推荐片段

例如,如果您在一次注册中有3个部分,那么可以在viewpager中添加三个片段以获得更好的用户体验

所有数据都可以使用接口b / w片段和活动

直接通过Activity访问

答案 1 :(得分:0)

您可以将第一个活动中的所有数据放入捆绑包中,然后将捆绑包放入意图附加内容中,在第二个活动中获取捆绑包添加新数据并再次执行所有操作。

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

在第二个活动中使用intent.getExtras()来获取数据

答案 2 :(得分:0)

将数据存储在列表中的原因是什么?在这种情况下,只需直接写入您的数据对象MyObject,但请考虑更精确地命名。

如果您需要存储多个电话号码或电子邮件值。考虑将列表添加到MyObject`数据结构中。

相关问题